已知公钥时生成Java RSA私钥

时间:2018-11-11 23:07:18

标签: java rsa key-generator

在已知公钥(例如3)的情况下,是否可以在Java中生成RSA私钥

我找不到从java.security包中使用Class KeyPairGenerator做到这一点的方法...

我的问题很简单,我不是在寻找与密码学有关的信息。 只想知道,如果我具有 RSA 的公共指数,是否可以使用 java 中的一种方法来获取私有指数< / strong>,对于该公共指数,对于给定的模数长度,例如2048? 这应该可以使您对该主题有所了解: https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Key_generation https://en.wikipedia.org/wiki/65,537

2 个答案:

答案 0 :(得分:4)

public-key cryptography的全部要点是私钥仍然是秘密的。如果有一种方法可以轻松地从公共密钥生成私钥,则加密模式将被破坏。

是的,您可能可以强行使用私钥,但这并不容易:

  

公钥密码系统的强度取决于从配对的公钥中查找私钥所需的计算量(密码学中的工作因子)。有效的安全性只需要使私钥保持私密即可。公钥可以公开分发而不会影响安全性。

答案 1 :(得分:0)

答案为“否”。

长答案是使用sunrsasign提供程序,该提供程序实现RSAKeyPairGenerator使得公共指数为65537: *“ / **  * RSA密钥对生成。标准算法,最小密钥长度为512位。  *我们生成两个随机素数,直到找到两个phi是相对的素数  *成为公共指数的素数。默认指数为65537。它只有位0  *和第4位设置,这使其特别有效。 ** / *

如果要其他公共指数,则需要创建自己的提供程序并将其与JCA集成。

进一步了解此here背后的数学原理。