Tengo una matriz de matrices JSON cuyos valores estoy tratando de cifrar con CryptoJS y luego imprimo para usar en otro archivo, donde estos valores deben descifrarse usando una frase de contraseña dada por el usuario.Mi cifrado/descifrado CryptoJS no funciona
Pero estoy haciendo algo mal y obtengo "Error no detectado: datos UTF-8 mal formados" al descifrar las URL.
encrypt.js:
var encrypted = CryptoJS.AES.encrypt(item[key], pass);
json[j] += encrypted.ciphertext.toString(CryptoJS.enc.Base64);
decrypt.js:
var decrypted = CryptoJS.AES.decrypt(item[key], pass);
html += '<a href="' + decrypted.toString(CryptoJS.enc.Utf8) + '" target="_blank" class="socialico ' + key + '">' + icons[key] + '</a>';
que siguieron this ... Ayuda ejemplo, bastante por favor?
Gracias por su interés. Usé el mismo 'var pass = 'something'' en ambos archivos y' console.log (typeof (item [key]) ==' string ') 'impreso verdadero para todos los artículos. – Viktor
Ahh. Noté otro problema probable. Debe usar el mismo IV para descifrado que se usó durante el cifrado. Normalmente, el IV se serializa junto con el texto cifrado, pero se guarda explícitamente solo el texto cifrado, sin el IV. Intenta cambiar 'encrypted.ciphertext.toString (CryptoJS.enc.Base64)' por 'encrypted.toString()' –
¡Oh, gracias! Quité el 'texto cifrado' y' Base64' y ahora parece funcionar. ¡Ahora tengo una página web bastante segura usando solo JavaScript! Eso es bonito, muy bueno. – Viktor