2012-01-10 64 views
0

我有35字節哈希需要簽名。 但是當我試圖與SHA1.net RSACryptoServiceProvider支持哈希算法

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

我得到錯誤「壞哈希」(顯然)唱吧,因爲SHA1摘要尺寸是20

現在是有SHA1之外的任何其他哈希算法的支持。 for instace

rsa.SignHash(hash, "SHA224"); 

回答

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列表。