奇怪,但代码的签名数组长度是相同的: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 字节。
1 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
SHA-256 和 SHA-512 分别产生 256 和 512 位哈希值。
您的 RSA 密钥是 1024 或 2048 位,并且将其用作密码时的块大小是相同的。
由于两个哈希值都小于 RSA 块大小,因此需要将它们填充到该大小。并且因为它们被填充,所以无论使用何种散列算法,生成的签名都将具有相同的大小。
这里的线索是最后一个参数,它指定了填充算法。
- 1 回答
- 0 关注
- 515 浏览
添加回答
举报
0/150
提交
取消