SHA512算法的哈希值长度为128位

本文关键字:128位 哈希值 算法 SHA512 | 更新日期: 2023-09-27 18:02:48

我有一个奇怪的问题。在我的代码中,我创建了一个sha512哈希算法,并用它签署了一些数据。现在我期望哈希值是512位,但实际上是128位。我犯了什么错误?

我代码:

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

p。我已经从一个文件中加载了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

SHA512算法的哈希值长度为128位

哈希值的大小为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

SignData不返回使用SHA512算法生成的散列,它返回使用提供商(http://www.w3.org/2000/09/xmldsig#rsa-sha1)的signaturealgalgorithm属性生成的散列的签名