📖 工具说明
1. 这是什么
对「消息(或文件)+ 密钥」计算 HMAC(基于哈希的消息认证码):HMAC-MD5 / SHA1 / SHA224 / SHA256 / SHA384 / SHA512 / SHA3-224 / SHA3-256 / SHA3-384 / SHA3-512 / SM3(国密)/ RIPEMD160。可切 Hex(大小写)或 Base64 输出。用于 API 签名、Webhook 校验、文件完整性校验等,浏览器本地运行。
2. 用法
- 选输入来源:文本(按 UTF-8)或文件(分块读取、边读边算,大文件不会一次性读入内存)。
- 填密钥,并选「密钥编码」:UTF-8 文本、Hex 或 Base64(密钥是原始字节时选后两个)。
- 选算法和输出格式。
- 文本模式下勾了「实时」边打边出;文件模式点按钮计算。结果下方标注位长和字符数。
3. 说明
- 消息和密钥都不出浏览器,不联网、不上传。
- HMAC 采用内外两层哈希构造,能抵抗长度扩展攻击——不要用裸的
hash(key + message) 代替。
- 结果和 Node.js
crypto.createHmac、Python hmac、Java Mac 在相同算法 + 相同密钥字节下一致。
- 密钥是十六进制 / Base64 字节(而非文本口令)时,请在「密钥编码」里选对应项,否则会被当作 UTF-8 文本处理,结果就对不上。
- SHA3 是标准 SHA-3(FIPS 202),与 OpenSSL 等一致。注意 crypto-js 库自带的 "SHA3" 实际是早期的 Keccak(填充不同),结果和标准 SHA-3 不一样;本工具的 SHA3 和 SM3 是自行实现并已与 OpenSSL 对拍,其余算法用 crypto-js。
- SM3 是国密杂凑算法,HMAC-SM3 采用标准 HMAC 构造(块大小 64 字节)。注意:sm-crypto 等库的 "SM3 + key" 把密钥当 Hex 处理,若要对齐,密钥编码选 Hex。
- HMAC-MD5 / SHA1 目前仍算安全(碰撞不直接威胁 HMAC),但新系统建议 SHA-256 起。
相关:SHA 计算 · MD5 计算 · PBKDF2 · AES 加解密 · Base64 编解码。
密钥默认按 UTF-8 文本处理,原始字节请在「密钥编码」里选 Hex / Base64;SHA3 为标准 FIPS 202 实现。
更多 HMAC 基础知识:HMAC 基础知识:理念、数学结构、安全性和应用场景