Java 当 public 密钥已知时生成 RSA 私钥

Java RSA private key generation when public key is known

public 密钥已知时,有没有办法在 java 中 生成 RSA 私钥[=26] =], 说 3 ?

我找不到使用 Class KeyPairGenerator 的方法,来自 java.security 包...

我的问题很简单,我不是在寻找与密码学相关的信息。 只是想知道,如果我有RSA的public指数,有没有办法在java 获取私有指数 ,对于那个 public 指数,对于给定的模数长度,例如2048? 这应该阐明这个主题: https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Key_generation https://en.wikipedia.org/wiki/65,537

public-key cryptography 的重点是私钥保密。如果有一种方法可以轻松地从 public 密钥生成私钥,那么加密模式就会被破坏。

是的,您或许可以暴力破解私钥,但这并不容易:

The strength of a public key cryptography system relies on the computational effort (work factor in cryptography) required to find the private key from its paired public key. Effective security only requires keeping the private key private; the public key can be openly distributed without compromising security.

排序答案是 "no"。

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

如果您想要不同的public指数,您需要创建自己的提供程序并将其与 JCA 集成。

更多关于这背后的数学知识 here