我正在尝试使用DSACryproServiceProvider
. 但我有点困惑,因为我看不出两者之间的区别
一种)dsa.VerifySignature()
b)dsa.VerifyData()
另外,我希望在返回签名数据的dsa.CreateSignature()
同时为给定数据创建签名。dsa.SignData()
它是否正确?
感谢您的回复。
不同之处在于它CreateSignature
需要一个散列值。它不执行散列,同样地,VerifySignature
期望一个散列值来验证。例如,如果您需要自定义哈希,则可以使用此选项。
SignData
并对VerifyData
数据缓冲区执行散列。哈希本身是SHA1
,引用:
DSA 使用 SHA1 哈希算法。
DSACryptoServiceProvider
虽然有点老了,如果可以的话,你应该使用RSACryptoServiceProvider
,引用MSDN:
有更新的非对称算法可用。考虑使用 RSACryptoServiceProvider 类而不是 DSACryptoServiceProvider 类。仅将 DSACryptoServiceProvider 用于与旧应用程序和数据的兼容性。