如何从 CryptoJS AES 对象中创建一个字符串?
How to make a String out of a CryptoJS AES Object?
我有 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 格式表示。请注意,它不能产生相同的结果,因为您使用的是基于密码的加密,在此期间会生成随机盐以生成用于加密的实际密钥和 IV。您使用相同参数生成的每个密文看起来都不一样。
只有对密文的解密才能让您知道密钥+IV 或密码+salt 是否正确,然后只有当您包含某种完整性检查时(填充是一种穷人的完整性检查)。另见:Should we MAC-then-encrypt or encrypt-then-MAC?
如果您只想检查用户名是否相同,则应使用与密码相同的技术。也就是说,您应该使用哈希。 CryptoJS 提供了多种哈希函数,包括 PBKDF2 的实现以提高安全性。当您将密码设置为 PBKDF2 的盐时,这将为您提供所需的 属性。
我有 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 格式表示。请注意,它不能产生相同的结果,因为您使用的是基于密码的加密,在此期间会生成随机盐以生成用于加密的实际密钥和 IV。您使用相同参数生成的每个密文看起来都不一样。
只有对密文的解密才能让您知道密钥+IV 或密码+salt 是否正确,然后只有当您包含某种完整性检查时(填充是一种穷人的完整性检查)。另见:Should we MAC-then-encrypt or encrypt-then-MAC?
如果您只想检查用户名是否相同,则应使用与密码相同的技术。也就是说,您应该使用哈希。 CryptoJS 提供了多种哈希函数,包括 PBKDF2 的实现以提高安全性。当您将密码设置为 PBKDF2 的盐时,这将为您提供所需的 属性。