如何使用openssl中的特定输入数生成rsa密钥?

SPB*_*SPB 13 openssl rsa

我选择了2个素数p和q.计算公共对:(n,e)和私钥:d.
对于前者 在互联网上发现后,我发现这个命令生成公钥,私钥对:
p =17, q = 11
n = 187,
e= 7 & d = 23


openssl genrsa -out mykey.pem 1024

但我想生成对应于d = 23的私钥和对应于e = 7的公钥.如何将这些数字作为输入.

Iri*_*ium 28

一种方法是使用OpenSSL的asn1parse命令-genconf选项生成DER编码密钥.

您需要构建一个输入文件,以便asn1parse -genconf以标准格式生成RSA密钥(根据RFC 3447).asn1parse -genconf这里给出了语法:http://www.openssl.org/docs/crypto/ASN1_generate_nconf.html,事实上,它已经有一个构建RSA密钥的例子.

你需要计算几个值(具体d mod (p-1),d mod (q-1)并且q^-1 mod p对于该值.p,q,d你给了,它们是:

d mod(p-1) = 23 mod 16 = 7

d mod(q-1) = 23 mod 10 = 3

q^-1 mod p = 14

将所有内容放在一个适当格式的文本文件中:

asn1=SEQUENCE:rsa_key

[rsa_key]
version=INTEGER:0
modulus=INTEGER:187
pubExp=INTEGER:7
privExp=INTEGER:23
p=INTEGER:17
q=INTEGER:11
e1=INTEGER:7
e2=INTEGER:3
coeff=INTEGER:14
Run Code Online (Sandbox Code Playgroud)

要构造二进制DER文件:

openssl asn1parse -genconf <path to above file> -out newkey.der
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过OpenSSL的rsa命令运行此命令以确认:

openssl rsa -in newkey.der -inform der -text -check
Run Code Online (Sandbox Code Playgroud)

哪个应该输出:

Private-Key: (8 bit)
modulus: 187 (0xbb)
publicExponent: 7 (0x7)
privateExponent: 23 (0x17)
prime1: 17 (0x11)
prime2: 11 (0xb)
exponent1: 7 (0x7)
exponent2: 3 (0x3)
coefficient: 14 (0xe)
RSA key ok
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MBwCAQACAgC7AgEHAgEXAgERAgELAgEHAgEDAgEO
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

您可以使用它来使用OpenSSL rsautl命令加密数据(尽管使用此密钥,您只能加密一个字节的数据,前提是该字节也小于187).

  • 请稍等一下:您需要`openssl asn1parse -genconf textfile -out newkey.der`,其中`textfile'是上述输入文件。 (2认同)