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

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


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 字节。


料青山看我应如是
浏览 529回答 1
1回答

慕哥6287543

SHA-256 和 SHA-512 分别产生 256 和 512 位哈希值。您的 RSA 密钥是 1024 或 2048 位,并且将其用作密码时的块大小是相同的。由于两个哈希值都小于 RSA 块大小,因此需要将它们填充到该大小。并且因为它们被填充,所以无论使用何种散列算法,生成的签名都将具有相同的大小。这里的线索是最后一个参数,它指定了填充算法。
打开App,查看更多内容
随时随地看视频慕课网APP