14

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

但是我做错了,在解密 URL 时出现“未捕获的错误:格式错误的 UTF-8 数据”。

加密.js:

var encrypted = CryptoJS.AES.encrypt(item[key], pass);
json[j] += encrypted.ciphertext.toString(CryptoJS.enc.Base64);

解密.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>';

我按照这个例子......帮助,漂亮吗?

4

1 回答 1

15

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

有几件事要检查:

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