SHA512算法的哈希值是128位长吗?

时间:2013-03-07 12:05:51

标签: c# hash sha512

我有一个奇怪的问题。 在我的代码中,我创建了一个sha512哈希算法并用它来签名一些数据。 现在我希望哈希长度为512位,但它是128位。 我犯了什么错误?

我的代码:

var hashAlgorithm = HashAlgorithm.Create( „SHA512“ );
var signedhHash = rsaCryptoServiceProvider.SignData( plainData, hashAlgorithm );

PS。 我已经从一个文件中加载了RSA密钥,我使用以下脚本创建了该文件:

makecert -r -n "CN=myCert" -sky exchange -sy 24 -sv myCert.pvk myCert.cer
cert2spc myCert.cer myCert.spc
pvk2pfx -pvk myCert.pvk -spc myCert.spc -pfx myCert.pfx –f

修改

我得到signedhHash.Length的长度,等于128。

2 个答案:

答案 0 :(得分:3)

哈希值大小为512,但签名哈希值(来自SignData)的大小为1024.

var alg = HashAlgorithm.Create("SHA512");
var hashArr = alg.ComputeHash(ASCIIEncoding.UTF8.GetBytes("test"));
var size = hashArr.Length * 8; //512

var rsaCryptoServiceProvider = new RSACryptoServiceProvider();
var signedValue = rsaCryptoServiceProvider.SignData(ASCIIEncoding.UTF8.GetBytes("test"), alg);
size = signedValue.Length * 8; //1024

(1字节= 8位)

答案 1 :(得分:0)

SignData不返回使用SHA512算法生成的哈希,它返回使用提供程序的SignatureAlgorithm属性(http://www.w3.org/2000/09/xmldsig#rsa-sha1)进行的哈希的签名