这可能是一个问题http://crypto.stackexchange.com,但我想我应该先在这里尝试一下,因为答案可能与 .NET 有关,而不是与加密算法本身有关。
In the RSACryptoServiceProvider 类,有一个方法SignHash, which:
通过使用私钥加密指定的哈希值来计算签名。
第一个参数是数据的哈希值(这看起来很公平),但第二个参数是一个字符串,说明用于创建哈希值的算法。
问题是为什么哈希算法很重要?当然,该方法需要做的就是使用其私钥加密给定值并返回结果?如果确实需要知道,为什么 RSACryptoServiceProvider 没有一个方法可以做到这一点(以及适当的验证方法)?
感谢铱星让我沿着正确的思路思考。
接收者得到两件事:
要验证消息,接收者需要使用发送者的公钥解密签名,并根据消息的哈希值进行检查。
如果未向收件人指定哈希算法,他们将无法知道如何对消息进行哈希处理,因此无法对其进行验证。
因此必须向接收者指定算法。
为了使哈希算法由发送者(知道签名是如何创建的)指定,并且其他任何人都无法修改,它需要包含在签名内,并与哈希一起加密。
因此,为了创建有用的签名,在加密哈希时需要指定哈希算法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)