HMAC在线加密
基于Hash的消息认证码计算工具,支持MD5, SHA1, SHA256等多种哈希算法
密钥是用于生成和验证签名的关键字符串
关于 HMAC
HMAC (Hash-based Message Authentication Code) 是一种通过特别计算方式之后产生的消息认证码,使用密码散列函数,同时结合一个加密密钥。
它可以用来保证数据的完整性,同时可以用来作某个消息的身份验证。
工作原理
HMAC 运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。只有拥有相同密钥的双方才能生成相同的HMAC值。
应用场景
API 请求签名验证 (如 AWS S3, 支付宝接口)
验证数据完整性 (防止数据传输中被篡改)
身份认证 (基于Cookie或Token的签名)
Webhook 安全验证
支付网关回调验证
安全建议
尽量使用长且复杂的随机密钥。建议使用 SHA-256 或 SHA-512 等强哈希算法,避免使用 MD5 (除非为了兼容旧系统)。
常见问题
HMAC 和普通 Hash 有什么区别?
普通 Hash (如 MD5, SHA256) 不需要密钥,任何人对相同输入都能算出相同结果。HMAC 需要密钥,只有拥有密钥的人才能验证或生成正确的 HMAC。
HMAC 可以解密吗?
不可以。HMAC 是单向加密(哈希),无法还原出原始消息。它的主要作用是验证,而不是加密存储。
密钥长度有要求吗?
理论上没有限制,但建议密钥长度至少等于哈希函数的输出长度(例如 SHA-256 为 32 字节)。过短的密钥会降低安全性。
什么是 Hex 和 Base64 格式的密钥?
有时候密钥是二进制数据,无法直接用文本表示。这时通常用 Hex (十六进制字符串) 或 Base64 编码来表示。如果您的密钥是 "4a8f..." 这种形式,很可能是 Hex。
为什么我的结果和别人的不一样?
请检查:1. 消息内容是否完全一致(包括空格、换行);2. 密钥是否一致;3. 哈希算法是否选择正确;4. 密钥格式是否正确(是当做普通文本还是Hex处理)。
此工具安全吗?
完全安全。所有计算都在您的浏览器本地进行,密钥和消息永远不会发送到服务器。