DSACryptoServiceProvider:VerifySignature与SignData

时间:2014-06-18 16:36:44

标签: c# sign dsa

我试图使用DSACryproServiceProvider。 但我有点困惑,因为我无法看到

之间的差异

a)dsa.VerifySignature()

b)dsa.VerifyData()

另外我希望dsa.CreateSignature()只为给定数据创建签名,而dsa.SignData()返回签名数据。这是对的吗?

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

不同之处在于CreateSignature需要散列值。它没有执行散列,同样,VerifySignature期望散列值进行验证。例如,如果您想要自定义哈希,可以使用此方法。

SignDataVerifyData对数据缓冲区执行散列处理。哈希本身是SHA1,引用:

  

DSA使用SHA1哈希算法。

DSACryptoServiceProvider有点老了,如果可以的话,你应该使用RSACryptoServiceProvider,引用MSDN

  

可以使用更新的非对称算法。请考虑使用RSACryptoServiceProvider类而不是DSACryptoServiceProvider类。仅使用DSACryptoServiceProvider与遗留应用程序和数据兼容。