.net RSACryptoServiceProvider支持的哈希算法

时间:2012-01-10 10:05:07

标签: c# .net cryptography rsa

我有35字节的哈希需要签名。 但是当我尝试用SHA1唱歌时

var rsa = new RSACryptoServiceProvider();
rsa.SignHash(hash, "SHA1");

我收到错误“bad hash”(显然),因为SHA1摘要大小为20.

现在除了支持SHA1之外还有其他哈希算法。为instace

rsa.SignHash(hash, "SHA224");

1 个答案:

答案 0 :(得分:1)

我不知道任何有35个字节作为输出的散列函数。 SHA-224是28个字节。

使用SignHash()方法时,使用PKCS#1 v.1.5对哈希进行签名。此签名的一部分是准确指定使用哪个哈希的信息,因此如果您的哈希不是SHA-1哈希,则不应尝试对其进行签名,指定SHA-1(同样使用SHA-225)

如果要签署35字节哈希值,可以考虑使用支持的哈希函数对其进行重新编码:

rsa.SignData(hash, HashAlgorithm.Create("SHA256"));

并回答您的实际问题:这是supported hash algorithms in .NET 4的列表。