【问题标题】:Reason for different byte[] size of RSAEngine.processBlockRSAEngine.processBlock 不同字节 [] 大小的原因
【发布时间】:2015-01-22 19:23:51
【问题描述】:

从 RSAEngine (bcprovjdk16-1.45.jar) 类中的 processBlock 方法返回的不同大小的字节 [] 可能是什么原因。 (一种情况下为 127,另一种情况下为 128,在两台不同的机器上运行相同版本的 java,[1.7,64 位],并使用相同的公钥进行加密,使用相同的私钥进行解密和解密相同的数据。

【问题讨论】:

  • 这可能是填充方案。分享一些代码,不然我想你不用猜太多也帮不上什么忙。
  • 不知道,但我和一位同事在 Bouncy Castle 的 DH 程序中发现了一个错误,之前他们忘记正确实现 I2OSP 函数(即整数到八位字节字符串原语),其中整数是格式化为与密钥大小相同的大端、无符号、左填充八位字节字符串。也许这是同一类型的问题。
  • 糟糕,无法为以前的版本创建到 FTP 下载页面的连接。
  • @owlstead:旧的东西似乎也是here

标签: java encryption rsa bouncycastle


【解决方案1】:

基本上,如果我查看源代码,那么如果输入的大小不同,或者输入前面的字节设置为零,那么您确实可以得到更少的字节。然而,只有当您使用原始/教科书 RSA 时,这才应该是正确的 - 即 RSA 具有应用于纯文本的填充模式。教科书 RSA 不应直接用于加密消息(可能包含任何内容)。

要解决此问题,请使用填充模式,例如 PSS 或 PKCS#1 v1.5,可能与 AES 结合用于混合密码系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    相关资源
    最近更新 更多