繁体   English   中英

RSA.SignHash SHA512 和 SHA256 给出相同的签名长度

[英]RSA.SignHash SHA512 and SHA256 give the same signature length

奇怪,但代码的签名数组长度是相同的:

using (RSA rsa = certifiateToUse.GetRSAPrivateKey())
{
    byte[] bytesData = Encoding.UTF8.GetBytes(input);
    byte[] hash512 = rsa.SignHash(bytesData, HashAlgorithmName.SHA512, RSASignaturePadding.Pss);
    byte[] hash256 = rsa.SignHash(bytesData, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);
}

hash512 和 hash256 的数组长度均为 512。 我找不到一个合理的答案。 也许我错过了一些明显的东西? 我预计它的长度分别为 512 和 256 字节。

SHA-256 和 SHA-512 分别产生 256 和 512 位哈希值。

您的 RSA 密钥是 1024 或 2048 位,并且将其用作密码时的块大小是相同的。

由于两个哈希值都小于 RSA 块大小,因此需要将它们填充到该大小。 并且因为它们被填充,所以无论使用何种散列算法生成的签名都将具有相同的大小

这里的线索是最后一个参数,它指定了填充算法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM