序言:我对 HMAC 很陌生,所以如果问题有点愚蠢,请原谅我。
据我了解,HMAC 用于确保消息未被篡改。所以基本上,它用作哈希码。但是,由于散列算法是已知的,攻击者可以轻松地为消息的篡改版本计算新的散列代码。
这就是 HMAC 试图解决的问题:它们提供一个散列,该散列不仅基于应散列的消息,还基于加密 key 。这样就不可能在不知道 key 的情况下计算消息的有效值。
到目前为止,这是正确的吗?
我现在的问题是:如果我们可以使用公钥签名实现相同的目标,我们需要 HMAC 做什么? IIRC 签名的工作方式完全相同:计算散列并对其进行签名以确保没有人篡改消息或散列。
那么 HMAC 的意义何在?
最佳答案
与安全级别相当的任何已知公钥操作相比,HMAC 的尺寸更小,计算和验证所需的 CPU 更少。
关于cryptography - 当我们有公钥签名时,为什么我需要 HMAC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14372628/