Dado este código:
var s = "125\xb5\xb5$8" /* var s = "AAAA" */ var key = CryptoJS.enc.Utf8.parse(s) var iv = CryptoJS.enc.Utf8.parse(s) var plain = "Very secret message!" var encrypted = CryptoJS.AES.encrypt(plain, key, { keySize: 16, iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); var encryptedb64 = encrypted.toString() console.log("encrypted:", encryptedb64) var decrypted = CryptoJS.AES.decrypt(encryptedb64, key, { keySize: 16, iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); console.log("decrypted:", decrypted.toString(CryptoJS.enc.Utf8))
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
Obtengo este resultado (no esperado):
"encrypted:", "W2dFmOY22wp2W1ayCa1xmk3EwaxG/H+LKkgnADKAYmY=" "decrypted:", ""
Al cambiar la clave a "AAAA", obtengo este resultado (como se esperaba):
"encrypted:", "OAmNRtxYfJIFEq4VK4xPievfuXIIfEV+48yHBqVexWI=" "decrypted:", "Very secret message!"
Entiendo que key & iv NO deberían ser iguales y NO deberían ser estáticos, pero ese no es el punto aquí.
Ya tengo cadenas cifradas con esos parámetros y necesito descifrarlas. Esperaba que esto funcionara. Si el cifrado me devuelve un resultado, entonces el descifrado debería funcionar cuando se usan los mismos parámetros.