How to Generate rsa keys using specific input numbers in openssl?
我选择了2个质数p和q。 计算的公共对:(n,e)和私钥:d。
对于前。
n = 187,
e= 7 & d = 23
在互联网上浏览后,我发现此命令生成公用,专用密钥对:
但是我想生成对应于d = 23的私钥和对应于e = 7的公钥。我如何给这些数字作为输入。
一种方法是使用OpenSSL的
您需要为
您需要计算更多的值(特别是
将所有内容以适当的格式放到一个文本文件中:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 |
构造二进制DER文件:
1 | openssl asn1parse -genconf <path to above file> -out newkey.der |
然后,您可以通过OpenSSL的
1 | openssl rsa -in newkey.der -inform der -text -check |
哪个应该输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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----- |
您可以使用此命令通过OpenSSL的
如果您正在寻找一种不需要您进行其他计算的方法,那么我猜想这种方法将不存在。
看一下openssl源代码的rsa_gen.c中的rsa_builtin_keygen,它会自己生成素数。
我建议您在这里查看功能