我正在尝试使用DSACryproServiceProvider
。
但我有点困惑,因为我看不到两者之间的区别
a)dsa.VerifySignature()
b)dsa.VerifyData()
另外,我希望dsa.CreateSignature()
仅为给定数据创建签名,而dsa.SignData()
返回签名的数据。它是否正确?
多谢您的回覆。
最佳答案
区别在于CreateSignature
需要哈希值。它不执行散列,并且类似地,VerifySignature
要求验证散列值。例如,如果要自定义哈希,可以使用此方法。SignData
和VerifyData
在数据缓冲区上执行散列。哈希本身是SHA1
,引用:
DSA使用SHA1哈希算法。DSACryptoServiceProvider
有点老了,如果可以的话,应该使用RSACryptoServiceProvider
,并引用MSDN:
可以使用更新的非对称算法。考虑使用RSACryptoServiceProvider类而不是DSACryptoServiceProvider类。仅将DSACryptoServiceProvider用于与旧版应用程序和数据的兼容性。
关于c# - DSACryptoServiceProvider:VerifySignature与SignData,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24290834/