我有一组 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>';
我关注了this示例...帮助,漂亮吗?
最佳答案
该错误消息通常表示数据未正确解密,并且生成的明文字节未构成有效的 UTF-8 字符。
需要检查的几件事:
- 首先,确保您使用相同的加密和解密密码。您可能希望保留正确密码的哈希值,以便在使用密码进行解密之前验证用户是否提供了正确的密码。
- 其次,在加密之前确保值
item[key]
是一个字符串。 CryptoJS 无法加密 JSON 对象。您必须先将其序列化。
关于javascript - 我的 CryptoJS 加密/解密不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12574160/