javascript - 如何从 CryptoJS AES 对象中创建一个字符串?

标签 javascript json encryption cryptojs

我正在运行 CryptoJS,我需要执行以下操作:

我有用户名和密码。 U 用密码加密用户名:

var encrypted = CryptoJS.AES.encrypt("user", "pass");

如何从该对象创建一个字符串以将其存储在我的 LocalStorage 中?

最后我需要从我的 LocalStorage 加载它并将其与:
var encrypted2 = CryptoJS.AES.encrypt("user", "pass");

如果 encrypted === encrypted2一切皆好。

但是我无法取出 encrypted 的字符串这是一个 CryptoJS.AES Object当我使用 JSON.stringify我收到错误:TypeError: Converting circular structure to JSON

最佳答案

encrypted2.toString()将为您提供密文的 OpenSSL 格式表示。请注意,它不能产生相同的结果,因为您使用的是基于密码的加密,在此期间会生成一个随机盐来生成实际 key 和用于加密的 IV。使用相同参数生成的每个密文看起来都会有所不同。

只有密文的解密才能获得 key +IV或密码+盐是否正确的信息,然后只有当您包含某种完整性检查时(填充是一个穷人的完整性检查)。另见:Should we MAC-then-encrypt or encrypt-then-MAC?

如果您只想检查用户名是否相同,则应使用与密码相同的技术。也就是说,您应该使用散列。 CryptoJS 提供多种哈希函数,包括实现 PBKDF2 以提高安全性。当您将密码设置为 PBKDF2 的盐时,这将为您提供所需的属性。

关于javascript - 如何从 CryptoJS AES 对象中创建一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28342426/

相关文章:

c++ - dart 加密解密 AES 示例

javascript - 传递 '&' 和空格 javascript

jquery - 设置 JavaScript 对象字面量值

javascript - 在停止状态下更改图像上的 youtube 视频

java - 具有 2 个相同类型嵌套对象的 Json 对象

javascript - 如何编写下拉选项来加载 JSON 文件?

javascript - 一次更改或交换多个 HTML 元素的 CSS

c# - 使用 JSON 结果返回多个对象

java - 如果我需要将密码解密为明文,如何加密数据库中的密码?

java - 在 Python 2.7 中复制 Java 的 PBEWithMD5AndDES