Estoy tratando de usar la siguiente función para encriptar una cadena codificada en Base64 usando el algoritmo AES-256-CFB , y cuando intento codificar el resultado de nuevo en Base64, aparece el siguiente error: TypeError no detectado: r.clamp is not a función
function (base64EncodedString, password) { let iv = CryptoJS.lib.WordArray.random(256 / 16); let salt = CryptoJS.enc.Hex.parse(iv.toString(CryptoJS.enc.Hex).substr(0, 16)); let key = CryptoJS.EvpKDF(password, CryptoJS.enc.Hex.parse(salt), { keySize: 256 / 32 }); let nonEncryptedString = CryptoJS.enc.Base64.parse(base64EncodedString); let cipher = CryptoJS.lib.CipherParams.create({ ciphertext: nonEncryptedString , iv: iv, salt: salt, mode: CryptoJS.mode.CFB, padding: CryptoJS.pad.NoPadding,}); let encrypted = CryptoJS.AES.encrypt(cipher, key, {mode: CryptoJS.mode.CFB, padding: CryptoJS.pad.NoPadding, iv: iv}); let ecrytpedBase64 = CryptoJS.enc.Base64.stringify(encrypted); return ecrytpedBase64; };Esto sucede porque está pasando la variable cifrada (de tipo CipherParams) a la función stringify, que espera un WordArray (su variable iv).
CryptoJS.enc.Base64.stringify(encrypted); // TypeError: r.clamp is not a function CryptoJS.enc.Base64.stringify(iv); // Ok