我收到了一些旧的系统下面时,我问私人密钥:模数,公共EXP,EXP PRIVATE,PRIME_P,PRIME_Q,PARAM_P,PARAM_Q,Q_MOD_INV
所有这些数据是十六进制,我怎样才能将它转换为一个OpenSSL的PEM文件或PFX?
感谢你并致以真诚的问候!
我收到了一些旧的系统下面时,我问私人密钥:模数,公共EXP,EXP PRIVATE,PRIME_P,PRIME_Q,PARAM_P,PARAM_Q,Q_MOD_INV
所有这些数据是十六进制,我怎样才能将它转换为一个OpenSSL的PEM文件或PFX?
感谢你并致以真诚的问候!
生成与OpenSSL的RSA密钥:
openssl genrsa -out rsa.pem 2048
从PEM格式转换RSA密钥对DER格式:
openssl rsa -inform PEM -in rsa.pem -outform DER -out rsa.der
在打开文件rsa.der ASN.1编辑 :
RSA私有密钥的ASN.1结构在PKCS#1(RFC 3447)中所定义:
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
编辑所需的字段ASN.1编辑器(右键单击该项,然后选择“以十六进制编辑模式”),并粘贴以下这个映射您的数据:
MODULUS = modulus
PUBLIC EXP = publicExponent
PRIVATE EXP = privateExponent
PRIME_P = prime1
PRIME_Q = prime2
PARAM_P = exponent1
PARAM_Q = exponent2
Q_MOD_INV = coefficient
基于评论编辑:私钥的各个部分大整数。 当该值的最左边的位是1(或最左侧字节等于或大于0x80的更大),那么为0x00字节需要被preppended的值,以指示它是正数。
最后保存修改后的文件,并将其从DER格式与OpenSSL的PEM格式转换:
openssl rsa -inform DER -in rsa.der -outform PEM -out rsa.pem