在已知公钥(例如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
答案 0 :(得分:4)
public-key cryptography的全部要点是私钥仍然是秘密的。如果有一种方法可以轻松地从公共密钥生成私钥,则加密模式将被破坏。
是的,您可能可以强行使用私钥,但这并不容易:
公钥密码系统的强度取决于从配对的公钥中查找私钥所需的计算量(密码学中的工作因子)。有效的安全性只需要使私钥保持私密即可。公钥可以公开分发而不会影响安全性。
答案 1 :(得分:0)
答案为“否”。
长答案是使用sunrsasign提供程序,该提供程序实现RSAKeyPairGenerator使得公共指数为65537: *“ / ** * RSA密钥对生成。标准算法,最小密钥长度为512位。 *我们生成两个随机素数,直到找到两个phi是相对的素数 *成为公共指数的素数。默认指数为65537。它只有位0 *和第4位设置,这使其特别有效。 ** / *
如果要其他公共指数,则需要创建自己的提供程序并将其与JCA集成。
进一步了解此here背后的数学原理。