-6

当公钥已知时,有没有办法在java中生成RSA私钥,比如3?

我找不到使用 java.security 包中的 Class KeyPairGenerator 执行此操作的方法...

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

4

2 回答 2

4

公钥密码术的全部意义在于私钥是保密的。如果有一种方法可以轻松地从公钥生成私钥,那么加密模式就会被破坏。

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

公钥密码系统的强度取决于从配对公钥中找到私钥所需的计算量(密码学中的工作因素)。有效的安全性只需要保持私钥的私密性;公钥可以在不影响安全性的情况下公开分发。

于 2018-11-11T23:21:56.620 回答
0

排序答案是“否”。

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

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

更多关于这背后的数学。

于 2018-11-19T12:54:21.187 回答