如何将HMAC添加到CryptoJS AES加密中

How to add HMAC to CryptoJS AES encryption?

本文关键字:CryptoJS AES 加密 添加 HMAC      更新时间:2023-09-26

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驱动器的浏览器文件加密服务。