我正在尝试使用 DSACryproServiceProvider
。
但我有点困惑,因为我看不出
a) dsa.VerifySignature()
b) dsa.VerifyData()
此外,我希望 dsa.CreateSignature()
只是为给定数据创建签名,而 dsa.SignData()
返回签名数据。这是正确的吗?
感谢您的回复。
最佳答案
不同之处在于 CreateSignature
需要一个散列值。它不执行散列,同样,VerifySignature
需要一个散列值来验证。例如,如果您想要自定义哈希,可以使用它。
SignData
和 VerifyData
对数据缓冲区执行散列。哈希本身是 SHA1
,引用:
DSA uses the SHA1 hash algorithm.
DSACryptoServiceProvider
虽然有点旧,如果可以的话,您应该使用 RSACryptoServiceProvider
,引用自 MSDN :
Newer asymmetric algorithms are available. Consider using the RSACryptoServiceProvider class instead of the DSACryptoServiceProvider class. Use DSACryptoServiceProvider only for compatibility with legacy applications and data.
关于c# - DSACryptoServiceProvider : VerifySignature vs. 签名数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24290834/