如何使用 HMAC 生成器生成消息认证码
填写非空文本、指定的秘密值和可用算法名称后提交,即可查看生成的 HMAC;未指定算法时会使用 SHA-256。文本为空时虽然可能返回成功状态,但 HMAC 值为空。
先明确输入和生成条件
HMAC 是基于哈希的消息认证码,可把一段文本与秘密值结合起来,生成用于核对的结果。使用生成器时,重点是确认待处理文本不为空、秘密值符合预期,并选用能够被哈希库解析的算法名称。文本、秘密值和算法都属于可选输入;文本和秘密值默认为空,算法默认采用 SHA-256。
按顺序填写并提交
- 在文本输入区域填写需要处理的消息,例如接口参数、订单状态或其他待核对内容。要得到实际计算出的 HMAC,文本必须包含内容,不能保持为空。
- 在秘密值输入区域填入你计划使用的值。非空文本配合空秘密值提交时,工具会改用内部备用秘密值,因此需要使用指定值时,应在提交前填写非空内容。
- 在算法输入或选择区域指定算法名称;没有指定时,工具会采用 SHA-256。算法名称需要能够对应到可用的哈希实现,名称本身并不会被自动转换成另一种算法。
- 提交生成操作,然后检查返回结果中的状态和 HMAC 值。非空文本与可用算法名称同时满足时,结果会包含生成的 HMAC。
- 如果文本为空,请先补充待处理内容再提交。空文本走的是单独的处理分支,返回的状态可能是成功,但其中的 HMAC 值为空,所以不能把它当成已经完成的密码学计算。
- 记录本次使用的文本、秘密值和算法名称,以便在需要复核时确认输入是否一致;不要把秘密值与需要保护的结果放在同一处保存。
根据状态和数值一起判断
判断结果时,先看文本是否非空,再核对所用算法名称能否解析为可用的哈希实现。只有这两个条件成立时,成功结果中的 HMAC 才表示工具已经生成了相应值;状态为成功本身并不足以说明出现了非空 HMAC。
若文本为空而结果显示成功,应把空 HMAC 值理解为空文本分支的返回内容,而不是把它当作某个算法计算出的值。若算法名称无法解析为可用实现,工具不会在本地把这种情况转换成结构化失败结果,此时应改用能够解析的名称后再次提交。
空秘密值也需要单独判断:在文本非空的情况下,工具会在生成前替换为内部备用秘密值。因而,使用空秘密值所得结果不等同于使用你指定的秘密值所得结果,复核时应同时确认秘密值是否确实填写。
使用示例
你要为订单状态文本生成消息认证码,并准备使用指定的示例秘密值和 SHA-256。
在文本区域输入“订单状态=已支付”,在秘密值区域输入“示例秘密值”,指定 SHA-256 后提交生成操作,再检查返回的状态与 HMAC 值。
结果应显示成功状态,并包含一个生成的 HMAC 值;这里不指定具体 HMAC 字符串。
使用限制
- 空文本不会产生计算出的 HMAC 值,而无法解析的算法名称也不会被工具转换为结构化失败结果。
常见错误
- 算法名称无法对应到可用的哈希实现时,工具不会将其转换为结构化失败结果;请改填能够解析的名称并重新提交。
常见问题
秘密值留空后会怎样?
在文本非空时,秘密值可以留空,但工具会改用内部备用秘密值;如果结果需要对应指定秘密值,请填写非空内容。
文本、秘密值和算法都必须填写吗?
不需要全部填写,因为文本、秘密值和算法都是可选输入;不过,空文本只会得到成功状态与空 HMAC 值,默认算法则为 SHA-256。
输入任意算法名称都能得到 HMAC 吗?
只有名称能够解析到可用哈希实现时,才适合期待生成 HMAC;无法解析的名称不会由工具转换为结构化失败结果。