2015-06-05 50 views
1

所以我必须根据位长度,模数,第一个素数和公开指数生成一个私钥(RSA)。生成给定模数,公开指数和素数的RSA密钥

问题是我有模数和prime1在十六进制对。我试过手动做,但数量变得非常长(显然)。我也尝试过使用openssl genpkey,但是对于RSA,它没有我需要的参数。

是否有人知道任何方式来做到这一点,否则我将不得不以十六进制/二进制手动操作?

+0

你将不得不编写一个程序来做到这一点。 openssl命令行工具不会为你做这件事。 –

+0

@GregS - 我认为它比这更容易(我第一次阅读它)。他有模数'n'和'p'。他只需要解决'q'。用'p','q'和'e',他可以有效地计算'd'。然后使用CRT恢复其他RSA私钥参数,如'dp','dq'和'q-inv'。最后,他可以将它填入“RSA *”中。中提琴! – jww

+0

@jww是的,但我缺少了3对p值的十六进制值,所以我不得不“猜测”它们。我已经解决了它,但无论如何感谢您的时间! – lpares12

回答

-1

正如James K Polk评论这个问题,openssl不支持以这种方式生成密钥。你必须亲自编写一个程序才能做到这一点。

例如,下面的Java代码可以工作。您还需要处理异常。

BigInteger modulus = /* modulus here */; 
BigInteger exponent = /* exponent here */; 
KeyFactory keyFactory = KeyFactory.getInstance("RSA"); 
keyFactory.generatePrivate(new RSAPrivateKeySpec(modulus, exponent)); 
相关问题