Openssl 根据给定的模、公共指数和素数1生成RSA密钥

Openssl 根据给定的模、公共指数和素数1生成RSA密钥,openssl,rsa,private-key,Openssl,Rsa,Private Key,所以我必须根据它的比特长度、模、第一个素数和公共指数生成一个私钥(RSA) 问题是我有十六进制的模和素数。我尝试过手动操作,但数字很长(显然)。我也尝试过使用openssl genpkey,但是对于RSA,它没有我需要的参数 有人知道怎么做,否则我将不得不用十六进制/二进制手动操作吗?正如James K Polk对这个问题的评论,openssl不支持以这种方式生成密钥。要做到这一点,你必须自己编写一个程序 例如,下面的Java代码可以工作。您还需要处理异常 BigInteger modulus

所以我必须根据它的比特长度、模、第一个素数和公共指数生成一个私钥(RSA)

问题是我有十六进制的模和素数。我尝试过手动操作,但数字很长(显然)。我也尝试过使用
openssl genpkey
,但是对于RSA,它没有我需要的参数


有人知道怎么做,否则我将不得不用十六进制/二进制手动操作吗?

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

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

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

你必须写一个程序来做这件事。openssl命令行工具不会为您做这件事。@GregS-我认为这比这容易(我第一次像您一样阅读它)。他有模数
n
p
。他只需要求解
q
。使用
p
q
e
,他可以高效地计算
d
。然后使用CRT恢复其他RSA私钥参数,如
dp
dq
q-inv
。最后,他可以把它塞进一个
RSA*
。中提琴@jww是的,但我发现p的3对十六进制值丢失了,所以我不得不“猜测”它们。我已经解决了,不过还是要感谢你抽出时间!