如何将HMAC添加到CryptoJS AES加密中
How to add HMAC to CryptoJS AES encryption?
CryptoJS的便利函数CryptoJS.AES.encrypt("some plaintext", "password")
似乎不做任何身份验证。
我看到 CryptoJS 提供了一个 HMAC 类,但我对如何使用它来加密然后进行身份验证感到困惑。
我四处搜索教程和其他问题,但找不到。
我将如何使用上面的 CryptoJS HMAC 类添加身份验证来验证CryptoJS.AES.encrypt
生成的密文?
cryptoJS提供的HMAC的想法是让你,开发人员,将加密数据和密钥传递给它,以便它在另一端吐出MAC。
下面是如何使用它为加密数据生成 MAC 的示例。这里的想法是,密钥对象是您与受信任方之间用于验证加密数据完整性的共享密钥。
//Encrypt Data
var encryptObject = CryptoJS.AES.encrypt(content, key, { iv: yourIV });
//Calculate HMAC
var HMAC = CryptoJS.HmacSHA256(encryptObject.toString(), key);
要记住的几件事。
始终在解密之前计算加密对象上的 HMAC。这可以防止对加密数据的任何操作在解密后造成伤害。
验证 HMAC 时,请确保数据编码/格式相同。例如,上面我使用了加密对象的 toString(),我这样做是因为 cryptoJS 自动将该对象序列化为仅密文。解密后,我会在呈现给我的加密 blob 的二进制字符串上计算 HMAC,以确保 HMAC 计算正确。
有了这个,我认为您应该设置为验证一些数据!
同样对于一个工作示例,您可以查看 http://meowcrypt.com/这是我使用cryptoJS的Google驱动器的浏览器文件加密服务。
相关文章:
- AES-CTR 在 Go 中加密,在 CryptoJS 中解密
- 如何将HMAC添加到CryptoJS AES加密中
- 如何在 Python 中从 JavaScript CryptoJS.AES.encrypt(password, pass
- 使用CryptoJS进行渐进式AES解密
- 如何在CryptoJS(nodejs/web浏览器)中解密AES 128
- 如何从CryptoJS AES对象中生成字符串
- CryptoJS AES加密不是对称的
- 创建 CryptoJS AES 密码加密器以在 .NET 中解密
- CryptoJS AES CBC 256 解密在明文中间添加了额外的字节
- 创建类似cryptoJS的C#256位AES加密
- CryptoJS使用密码短语加密AES,但PHP解密需要密钥
- 使用非标准密钥长度调用CryptoJS.AES.encrypt/decrypt时,如何处理AES密钥
- 在浏览器中的Node和CryptoJS之间使用AES加密时出现问题
- CryptoJS AES加密和JAVA AES解密值不匹配
- CryptoJS AES模式总是以=结尾
- CryptoJS.AES.decrypt()输出的wordArray用0x8080808填充
- CryptoJS AES加密的额外参数.如何使用PHP进行复制
- cryptojs . aes .解密失败原因
- CryptoJS AES加密输出不匹配
- 如何使用CryptoJS AES解密消息.我有一个Ruby的例子