HMAC
的全称是 Hash-based Message Authentication Code
,即基于哈希的信息验证算法。
HMAC
使用散列函数(如 MD5
、SHA-256
等)和一个密钥来生成认证码。
发送方和接收方都知道共享的密钥,发送方使用密钥和消息一起计算认证码,然后将认证码发送给接收方。
接收方使用相同的密钥和接收到的消息计算认证码,然后比较计算得到的认证码与接收到的认证码是否匹配。
如果匹配,消息被认为是可信的和完整的;如果不匹配,消息可能已被篡改或来自未经授权的发送方。
它通常用于保护数据的完整性和防止数据篡改。
HMAC
结合了散列函数(通常是 SHA-256
、SHA-512
等)和一个密钥,通过在消息上执行哈希运算来生成一个固定长度的认证码。
由于 HMAC
是基于 Hash
,因此在 crypto-js
中提供了类似于上节中 Hash
方法的 API
:
HmacMD5
HmacSHA1
HmacSHA224
HmacSHA256
HmacSHA384
HmacSHA512
HmacRIPEMD160
js
const md5Hash = CryptoJS.HmacMD5('Message', 'Secret Passphrase')
const sha1Hash = CryptoJS.HmacSHA1('Message', 'Secret Passphrase')
const sha256Hash = CryptoJS.HmacSHA256('Message', 'Secret Passphrase')
const sha512Hash = CryptoJS.HmacSHA512('Message', 'Secret Passphrase')
以 HmacMD5
为例:
js
const CryptoJs = require('crypto-js')
const text = 'Hello World'
// 880c4dcdc4ce1f8696b9645c44b275c6
console.log(CryptoJs.HmacMD5(text, 'Key').toString())