5

序言:我对 HMAC 很陌生,所以如果问题有点愚蠢,请原谅我。

据我了解,HMAC 用于确保消息未被篡改。所以基本上,它作为一个哈希码。但是,由于散列算法是已知的,攻击者可以很容易地为被篡改的消息版本计算出新的散列码。

这就是 HMAC 试图解决的问题:它们提供的散列不仅基于要散列的消息,还基于加密密钥。这样就不可能在不知道密钥的情况下计算消息的有效值。

到目前为止这是正确的吗?

我现在的问题是:如果我们可以使用公钥签名实现相同的目标,我们需要 HMAC 做什么?IIRC 签名的工作方式完全相同:计算哈希并对其进行签名以确保没有人篡改消息或哈希。

那么 HMAC 的意义何在?

4

1 回答 1

6

HMAC 的大小更小,计算和验证所需的 CPU 比任何已知的具有同等安全级别的公钥操作要少得多。

于 2013-01-17T05:23:11.140 回答