工具用的顺手吗?
你的反馈能帮助我们做得更好
安全计算消息认证码,支持SHA256/SHA512等算法,验证数据完整性与发送方身份
配置参数开始计算
概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
消息m与共享密钥K共同决定HMAC结果;修改任意一个字符、换一把密钥或改用另一种SHA算法,输出都会变化。接收方用同一密钥和同一字节序列重新计算,结果一致时可验证消息完整性与持钥方身份。HMAC不会隐藏消息内容,也不能从认证码还原原文,因此页面标题中的“加密”应理解为日常搜索叫法,而非可解密的密文算法。
HMAC(K, m) = H((K′ ⊕ opad) ∥ H((K′ ⊕ ipad) ∥ m))H是所选哈希函数,K′是按该函数分组规则处理后的密钥,∥表示连接。页面要求“密钥”和“输入消息”都非空,随后以小写十六进制显示结果。
| 页面选项 | 显示长度 | 典型选择原则 |
|---|---|---|
| HMAC-SHA1 | 40个十六进制字符 | 仅在既有协议明确要求时核对,新的协议设计优先SHA-2 |
| HMAC-SHA256 | 64个十六进制字符 | 默认选项,常见于API签名与Webhook验证 |
| HMAC-SHA384 | 96个十六进制字符 | 当前页面实现存在互操作限制,见须知 |
| HMAC-SHA512 | 128个十六进制字符 | 协议指定SHA-512时使用 |
十六进制长度来自摘要位数除以4。例如SHA-256产生256位结果,所以显示64个十六进制字符。更长的输出不自动代表更适合;调用方必须严格遵循协议约定的算法、编码、规范化和截断规则。
选择HMAC-SHA256,在“密钥”填secret_key,在“输入消息”填Hello, World!,页面结果为:
d0e72e3ebca850380c42bc96009638375860cb5c330048588d3298f02e740065把消息末尾的感叹号删除,结果会完全不同;把算法换成SHA-512,则输出变为128个十六进制字符。该例只用于复核字段顺序与输出编码,不应把示例密钥用于真实系统。
指南
按步骤完成操作,并通过示例核对输入与结果。
先确认对方要求SHA-256、SHA-512还是其他选项。算法名称相近也不能互换,当前页面默认SHA-256。
“密钥”区分大小写、空格和标点。若协议给的是Base64或十六进制密钥,需要先确认应当解码成字节,还是直接把字符文本当密钥;页面按输入的文本字符处理。
将规定的字段顺序、路径、时间戳、换行与正文放入“输入消息”。a=1&b=2与b=2&a=1是不同字节序列,不能自行重排。
结果会随输入自动出现,可从结果卡片复制。若对方要求Base64、带前缀、截断或大写十六进制,还需按其协议另行转换。
接入生产系统前,以协议提供的固定示例比对。服务端验证还应使用恒定时间比较,并校验时间戳、随机数或重放窗口。
场景
查看这项工具在不同工作与生活流程中的用法。
开发者可把接口文档中的固定消息与测试密钥填入页面,对照预期摘要,定位字段顺序、大小写或换行差异。
接收方可用脱敏后的测试载荷重算HMAC,确认签名算法和十六进制编码;真实验证仍应在可信服务端完成。
教学时可固定消息并更换密钥,再固定密钥修改一个字符,观察结果变化,区分普通哈希与带密钥认证码。
问答
集中解答高频疑问与容易混淆的问题。
通常是密钥、算法或真实字节不同。检查前后空格、换行格式、字符编码、字段顺序,以及密钥是否应先做Base64或十六进制解码。
不可以。HMAC是单向消息认证码;原文通常随请求单独传输,接收方重算后比对。
同一字节结果可以有不同文本编码。当前页面输出小写十六进制;需按协议把结果字节编码为Base64,不能直接对十六进制字符串再做文本替换。
不建议。浏览器扩展、剪贴板历史、录屏和共享设备都可能暴露密钥;应使用专门的密钥管理与受控测试环境。
须知
使用前了解适用范围、结果限制与必要提醒。
当前页面的SHA-384选项是截取HMAC-SHA512结果的前384位,并非RFC 4231定义的HMAC-SHA384;它会产生96位十六进制文本,但通常不会与标准实现一致。协议联调和安全用途不要采用该选项。
推荐
查找相关工具、专题与可用的 API 能力。