为什么从RSA-SHA512 X509Certificate2签署凭证似乎是RSA-SHA256?

时间:2014-12-29 22:31:38

标签: .net certificate rsa sha x509certificate2

给定从以下命令创建的公钥/私钥对PFX文件:

makecert.exe -r -n "CN=TEST" -pe -sv TEST.pvk -a sha512 -len 2048 -b 01/01/2014 -e 12/31/2075 TEST.cer
pvk2pfx.exe -pvk TEST.pvk -spc TEST.cer -pfx TEST.pfx

以下C#代码:

X509Certificate2 cert = new X509Certificate2("TEST.pfx");
Console.WriteLine(cert.SignatureAlgorithm.FriendlyName);

var creds = new X509SigningCredentials(cert);
Console.WriteLine(creds.SignatureAlgorithm);
Console.WriteLine("Key size: {0}", creds.SigningKey.KeySize / 8);

结果如下:

sha512RSA
http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
Key size: 256

我感到困惑的是,在创建证书SHA512时,签名凭据是以SHA256形式出现的?我误解了什么吗?

1 个答案:

答案 0 :(得分:1)

您可能误解的是使用散列算法的地方。第一个是在创建签名 over 证书期间使用的。第二个是在使用属于证书的私钥进行签名期间使用的散列算法。那个似乎默认为SHA-256。

请注意,Microsoft实际上将哈希算法与签名算法混淆。也许只有当每个人都只使用PKCS#1 v1.5风格的签名时才有意义,但现在它只是让它们看起来很愚蠢。