所有这些数据都是十六进制,我如何将其转换为openssl PEM文件或PFX?
谢谢你,最诚挚的问候!
答案 0 :(得分:3)
使用openssl:
生成RSA密钥openssl genrsa -out rsa.pem 2048
将RSA密钥从PEM格式转换为DER格式:
openssl rsa -inform PEM -in rsa.pem -outform DER -out rsa.der
在ASN.1 Editor中打开文件rsa.der:
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字节预先添加到该值以指示它是正数。
最后保存修改后的文件,并使用openssl:
将其从DER格式转换为PEM格式openssl rsa -inform DER -in rsa.der -outform PEM -out rsa.pem