HMAC(SHA-1)有多标准

How standard is HMAC(SHA-1)

HMAC(SHA-1) 是一种哈希计算算法,它也接受一个键作为输入值。该算法遵循一定的规则,并保证一定程度的安全性和抵御攻击的能力。

转到它的实现:HMAC(SHA-1) 是否是标准的,因为它的所有 "official" 和正确的实现对于给定的输入消息和密钥产生完全相同的结果?或者算法是否接受可能产生不同结果的不同实现?

任何给定的 HMAC-SHA1 实现都将生成与输入消息和密钥相同字节集的相同字节集。

也就是说,各种接口的工作方式以及它们接受这些字节的方式可能会有很多差异。例如,一个库可能将散列输出为十六进制字符串,而另一个库可能将其输出为字节数组。或者一个将字符串作为 UTF-8 编码的输入,而另一个将其作为 UTF-16 编码输入。您需要注意相同的字节在不同的库中命中算法,以确保您获得相同的结果。

此外,虽然从安全角度来看 HMAC-SHA1 可能没问题,但您可能应该改用 HMAC-SHA256。

非常标准。甚至是标准!

RFC2104 指定实际的 HMAC 算法和块大小。

RFC2202 包含 HMAC-MD5 和 HMAC-SHA1 的测试用例。

为了进一步研究,RFC4868 提供了有关 SHA2 系列 HMAC 的更多指导,重点是 IPSec。