Skip to content

HMAC 的全称是 Hash-based Message Authentication Code,即基于哈希的信息验证算法

HMAC 使用散列函数(如 MD5SHA-256等)和一个密钥来生成认证码。

发送方和接收方都知道共享的密钥,发送方使用密钥和消息一起计算认证码,然后将认证码发送给接收方。

接收方使用相同的密钥和接收到的消息计算认证码,然后比较计算得到的认证码与接收到的认证码是否匹配。

如果匹配,消息被认为是可信的和完整的;如果不匹配,消息可能已被篡改或来自未经授权的发送方。

它通常用于保护数据的完整性和防止数据篡改。

HMAC 结合了散列函数(通常是 SHA-256SHA-512 等)和一个密钥,通过在消息上执行哈希运算来生成一个固定长度的认证码

由于 HMAC 是基于 Hash,因此在 crypto-js 中提供了类似于上节中 Hash 方法的 API

  1. HmacMD5
  2. HmacSHA1
  3. HmacSHA224
  4. HmacSHA256
  5. HmacSHA384
  6. HmacSHA512
  7. 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())