我有5个显像管组件- primeP,primeQ,primeExponentP,primeExponentQ和crtCoefficient。有没有办法从这些数据中生成RSA密钥对?
当我查看RSAPrivateCrtKeySpec和RSAPublicKeySpec时,缺少的参数是模数、privateExponent和publicExponent。
有人能告诉我如何计算模数,privateExponent和publicExponent吗?
有没有Bouncy Castle实现可以做到这一点?
谢谢!相同的
发布于 2016-01-22 06:03:27
是的,这应该是可能的。除非公共指数真的很大,但这不太可能。
你可能会猜到(例如,尝试3,5,7,13,17和65537)或暴力破解公共指数-因为它通常是一个小素数。65537的值(0x010001,第四个费马质数)是最有可能的。然后你就可以calculate the private exponent了。您可以对密钥对使用sign/verify来验证您的猜测。
请注意,有CRT参数但没有公钥,这有点奇怪。实际上,这太奇怪了,你可能需要自己编写代码。
发布于 2016-10-25 12:13:03
只需为CRT规范中缺少的参数提供空值。钥匙工厂会解决这个问题的。
RSAPrivateCrtKeySpec privateSpec = new RSAPrivateCrtKeySpec(null, null, null, p, q, expP, expQ, coeff);
KeyFactory factory = KeyFactory.getInstance("RSA");
privateKey = (RSAPrivateKey)factory.generatePrivate(privateSpec);模数是primeP * primeQ。在大多数情况下,公共指数是65537。
https://stackoverflow.com/questions/34932367
复制相似问题