2

我正在尝试使用DSACryproServiceProvider. 但我有点困惑,因为我看不出两者之间的区别

一种)dsa.VerifySignature()

b)dsa.VerifyData()

另外,我希望在返回签名数据的dsa.CreateSignature()同时为给定数据创建签名。dsa.SignData()它是否正确?

感谢您的回复。

4

1 回答 1

1

不同之处在于它CreateSignature需要一个散列值。它不执行散列,同样地,VerifySignature期望一个散列值来验证。例如,如果您需要自定义哈希,则可以使用此选项。

SignData并对VerifyData数据缓冲区执行散列。哈希本身是SHA1,引用:

DSA 使用 SHA1 哈希算法。

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

有更新的非对称算法可用。考虑使用 RSACryptoServiceProvider 类而不是 DSACryptoServiceProvider 类。仅将 DSACryptoServiceProvider 用于与旧应用程序和数据的兼容性。

于 2014-06-18T16:55:47.243 回答