javascript - 我的 CryptoJS 加密/解密不工作

标签 javascript encryption cryptojs

我有一组 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/

相关文章:

javascript - 流畅的动画

c++ - 如何创建与 OpenSSL C++ 输出相比较的 OpenSSL 输出以生成单元测试?

javascript - 如何将此签名方法从 crypto( Node )转换为 crypto-js(浏览器)?

javascript - Bootstrap 选项卡 - Typeerror .tab 不是函数

java - 是否有等同于 Java 正则表达式中的交集 (&&) 运算符的 JavaScript 正则表达式?

ios - 如何保护(加密)webkit/local store 存储的数据

python - 十六进制转pem文件

javascript - Dart "encrypt"库在加密后给出不可读的字符串

encryption - Ionic - 将加密值存储在本地存储中

javascript - JS 在按下 Shift 时限制鼠标与轴的移动(对于可拖动元素)