我试图使用DSACryproServiceProvider
。
但我有点困惑,因为我无法看到
a)dsa.VerifySignature()
b)dsa.VerifyData()
另外我希望dsa.CreateSignature()
只为给定数据创建签名,而dsa.SignData()
返回签名数据。这是对的吗?
感谢您的回复。
答案 0 :(得分:1)
不同之处在于CreateSignature
需要散列值。它没有执行散列,同样,VerifySignature
期望散列值进行验证。例如,如果您想要自定义哈希,可以使用此方法。
SignData
和VerifyData
对数据缓冲区执行散列处理。哈希本身是SHA1
,引用:
DSA使用SHA1哈希算法。
DSACryptoServiceProvider
有点老了,如果可以的话,你应该使用RSACryptoServiceProvider
,引用MSDN:
可以使用更新的非对称算法。请考虑使用RSACryptoServiceProvider类而不是DSACryptoServiceProvider类。仅使用DSACryptoServiceProvider与遗留应用程序和数据兼容。