Bagaimana cara mendekripsi dengan CryptoJS menggunakan AES?

Seperti yang disarankan dalam pertanyaan, sepertinya saya tidak bisa mendapatkan nilai yang didekripsi dengan benar menggunakan opsi yang diperlukan (AES, Mode ECB & PKCS7).

Saya mengenkripsi seperti di bawah ini:

  var ENC_KEY = "bXlrZXk=";  //"mykey"

  var encrypted = CryptoJS.AES.encrypt("hello",  CryptoJS.enc.Base64.parse(ENC_KEY), 
    {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
  console.log('encrypted: ' + encrypted);

yang berfungsi seperti yang diharapkan dan menghasilkan nilai terenkripsi yang saya harapkan namun ketika saya mendekripsi ini menggunakan yang di bawah ini, saya berakhir dengan objek kosong yang dihasilkan:

var decrypted = CryptoJS.AES.decrypt(encrypted, CryptoJS.enc.Base64.parse(ENC_KEY), 
    {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    console.log('decrypted: ' + decrypted);

Saya juga sudah mencoba menggunakan:

console.log('encrypted is decrypted to: ' + decrypted.toString(CryptoJS.enc.Utf8);

tapi tidak ada kebahagiaan...


person user3197788    schedule 27.11.2014    source sumber


Jawaban (1)


Saya mencoba ini dengan biola (dimodifikasi sedikit agar berfungsi):

//decrypt gives a hex
function hex2a(hexx) {
    var hex = hexx.toString();//force conversion
    var str = '';
    for (var i = 0; i < hex.length; i += 2)
        str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
    return str;
}

var key = CryptoJS.enc.Base64.parse("Secret Passphrase"); 

alert(key);

var encrypted = CryptoJS.AES.encrypt("hello",  key, 
    {
        mode: CryptoJS.mode.ECB
    });

alert('encrypted: ' + encrypted);

var decrypted = CryptoJS.AES.decrypt(encrypted, key, 
    {
        mode: CryptoJS.mode.ECB
    });

alert('decrypted: ' + hex2a(decrypted));

http://jsfiddle.net/gttL705r/

dan menemukan bahwa decrypt mengembalikan hex, yang mungkin bukan string... mungkinkah ini menyebabkan masalah Anda? Jadi, dengan fungsi hex2ascii cepat, 'halo' dikembalikan :)

Saya juga menghapus padding yang ditentukan, karena Pkcs7 dikatakan sebagai default di dokumen dan saya tidak dapat menemukan src js, saya perlu mengunduhnya.

person neildaemond    schedule 27.11.2014
comment
Terima kasih @neildaemond Saya sekarang mencoba menerapkan ini di Node untuk menerima nilai dari browser klien dan mendapatkan masalah yang sama :( stackoverflow.com/questions/27174971/ - person user3197788; 27.11.2014