我的CryptoJS加密/解密无法正常工作

时间:2012-09-24 23:07:28

标签: javascript encryption cryptojs

我有一个JSON数组数组,其值正在尝试使用CryptoJS进行加密,然后打印以在另一个文件中使用,其中这些值应使用用户指定的密码来解密。

但我做错了什么,在解密网址时我收到“未捕获的错误:格式错误的UTF-8数据”。

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>';

我关注了this示例...帮助,非常好吗?

1 个答案:

答案 0 :(得分:12)

该错误消息通常意味着数据未正确解密,并且生成的明文字节不会形成有效的UTF-8字符。

要检查几件事:

  • 首先,确保您使用相同的密码进行加密和解密。您可能希望保留正确密码的哈希值,以便在用户进行解密之前验证用户是否提供了正确的密码。
  • 其次,确保在加密前值item[key]是一个字符串。 CryptoJS无法加密JSON对象。你必须先将它序列化。