我有一个奇怪的问题。
在我的代码中,我创建了一个 sha512 哈希算法并用它对一些数据进行签名。
现在我希望散列长度为 512 位,但它是 128。
我犯了什么错误?
我的代码:
var hashAlgorithm = HashAlgorithm.Create( „SHA512“ );
var signedhHash = rsaCryptoServiceProvider.SignData( plainData, hashAlgorithm );
附注。
我已经从一个文件中加载了 RSA key ,我使用以下脚本创建了该文件:
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。 最佳答案
散列值的大小为 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 位)