HMAC 计算
基于密钥计算 HMAC-SHA 消息认证码。
什么是HMAC 计算?
HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)是一种结合密钥和哈希算法(如SHA-1、SHA-256、SHA-384、SHA-512)计算出的认证码,本工具让你输入一段消息和一个密钥,计算出对应的HMAC值。 和普通哈希(如直接对文本做SHA-256)不同,HMAC引入了密钥参与运算,只有知道相同密钥的一方才能算出相同的结果,因此它不仅能像普通哈希一样验证内容是否被篡改,还能验证消息确实来自持有密钥的一方,常被用作消息认证而非加密——HMAC本身不能被解密还原出原始消息,也不是对称加密算法。
为什么使用HMAC 计算?
典型场景:验证第三方支付、开放平台Webhook回调请求的签名,比如支付宝、微信支付、GitHub Webhook都会用HMAC-SHA256对请求体加密钥签名,服务端收到请求后用同样密钥重新计算HMAC并比对,确认请求未被篡改且确实来自对方;接口请求签名,防止请求参数被中间人篡改;生成有密钥保护的完整性校验码,比原始哈希更安全,因为攻击者即使知道消息内容也无法伪造正确的HMAC(缺少密钥)。
使用示例
验证Webhook签名
消息:{"order_id":"1001","amount":99},密钥:mysecretkey,算法:HMAC-SHA256 计算结果:一串64位十六进制字符串,与回调请求头里的签名字段逐字符比对,一致则说明请求合法。
不同算法对比
同样的消息和密钥,分别用HMAC-SHA1、HMAC-SHA256、HMAC-SHA512计算,会得到长度不同(分别为40/64/128位十六进制字符)且完全不同的结果,需要与对方约定好具体使用哪种算法。
使用提示
计算全部在浏览器本地完成,密钥不会上传到服务器,但仍建议不要在公共电脑上输入生产环境的真实密钥。
常见问题
HMAC 和普通哈希有什么区别?
密钥可以是任意字符串吗?
数据会上传服务器吗?
HMAC和普通SHA256哈希有什么区别?
HMAC能加密消息吗?
密钥长度有要求吗?
计算结果为什么和对方不一致?
相关工具
相关教程
← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。