Расшифруйте строку, закодированную шифром, используя Javascript - PullRequest
0 голосов
/ 04 апреля 2020

Я закодировал строку, используя этот метод в Python. Я хочу декодировать закодированную строку, используя Javascript.

from Crypto.Cipher import XOR
def encrypt(key, plaintext):
    cipher = XOR.new(key)
    return base64.b64encode(cipher.encrypt(plaintext))

1 Ответ

2 голосов
/ 05 апреля 2020

У меня есть лучшее решение для шифрования в Python и дешифрования в Javascript.

Python Часть кодирования:

 import base64
 from Crypto import Random
 from Crypto.Cipher import AES
 import json

 def encrypt_val(clear_text):
    master_key = '0123456789101112' 
    encoder = PKCS7Encoder()
    raw = encoder.encode(clear_text)
    iv = Random.new().read( 16 )
    cipher = AES.new( master_key, AES.MODE_CBC, iv, segment_size=128 )
    return base64.b64encode( iv + cipher.encrypt( raw ) ) 

 print(encrypt_val(json.dumps({"name":"Tahir"})))

Javascript Часть декодирования:

const CryptoJS = require('crypto-js')
const atob = require('atob')

function decryptMsg (data) {
    master_key = '0123456789101112';

    // Decode the base64 data so we can separate iv and crypt text.
    var rawData = atob(data);
    // Split by 16 because my IV size
    var iv = rawData.substring(0, 16);
    var crypttext = rawData.substring(16);

    //Parsers
    crypttext = CryptoJS.enc.Latin1.parse(crypttext);
    iv = CryptoJS.enc.Latin1.parse(iv); 
    key = CryptoJS.enc.Utf8.parse(master_key);

    // Decrypt
    var plaintextArray = CryptoJS.AES.decrypt(
      { ciphertext:  crypttext},
      key,
      {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7}
    );

    // Can be Utf8 too
    output_plaintext = CryptoJS.enc.Latin1.stringify(plaintextArray);
    console.log("plain text : " + output_plaintext);
}
encoded_message = "XF8T/miPPVk9B7GfNUshRqJf6//sJnWey+TqoXj70Tp0vJhjw22uDLOLh7es4BOp"
decryptMsg(encoded_message)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...