gpt4 book ai didi

openssl - 如何在 openssl 中使用特定输入数字生成 rsa key ?

转载 作者:行者123 更新时间:2023-12-02 09:24:02 26 4
gpt4 key购买 nike

我选择了 2 个质数 pq
计算出的公共(public) key 对:(n,e) 和私钥:d
例如。

p = 17, q = 11, n = 187, e = 7 and d = 23

在网上冲浪后,我发现这个命令可以生成公钥和私钥对:
openssl genrsa -out mykey.pem 1024

但我想生成d = 23对应的私钥和e = 7对应的公钥。我怎样才能将这些数字作为输入。

最佳答案

实现此目的的一种方法是使用 OpenSSL 的 asn1parse 命令的 -genconf 选项生成 DER 编码 key 。

您需要为 asn1parse -genconf 构建一个输入文件,以生成标准格式的 RSA key (根据 RFC 3447 )。 asn1parse -genconf 的语法如下:http://www.openssl.org/docs/crypto/ASN1_generate_nconf.html事实上,它已经有一个构建 RSA key 的示例。

您需要计算更多值(具体来说,d mod (p-1)d mod (q-1)q^- 1 mod p。对于您给出的 pqd 的值,这些是:

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

构建二进制 DER 文件:

openssl asn1parse -genconf <path to above file> -out newkey.der

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

openssl rsa -in newkey.der -inform der -text -check

应该输出:

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 的 rsautl 命令来加密数据(尽管使用此 key ,您只能加密单个字节的数据,前提是该字节也小于 187)。

关于openssl - 如何在 openssl 中使用特定输入数字生成 rsa key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com