为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
料青山看我应如是 2021-09-19 15:55:39
奇怪,但代码的签名数组长度是相同的: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 块大小,因此需要将它们填充到该大小。并且因为它们被填充,所以无论使用何种散列算法生成的签名都将具有相同的大小

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


查看完整回答
反对 回复 2021-09-19
  • 1 回答
  • 0 关注
  • 515 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信