mon*_*nim 128 openssl rsa pem private-key
嗨,我正在编写一个程序,从一个.pem文件导入私钥,并创建一个私钥对象,以便以后使用它.我遇到的问题是一些pem文件头开头
-----BEGIN PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
而其他人开始
-----BEGIN RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
通过我的搜索我知道第一个PKCS#8格式化,但我不知道另一个格式是什么格式.
Jas*_*n C 155
请参阅https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem(搜索"BEGIN RSA PRIVATE KEY"页面)(后续存档链接,以防万一).
BEGIN RSA PRIVATE KEY是PKCS#1,只是一个RSA密钥.它本质上只是PKCS#8的关键对象,但前面没有版本或算法标识符.BEGIN PRIVATE KEY是PKCS#8并指示密钥类型包含在密钥数据本身中.从链接:
未加密的PKCS#8编码数据以标签开头和结尾:
Run Code Online (Sandbox Code Playgroud)-----BEGIN PRIVATE KEY----- BASE64 ENCODED DATA -----END PRIVATE KEY-----在base64编码数据中,存在以下DER结构:
Run Code Online (Sandbox Code Playgroud)PrivateKeyInfo ::= SEQUENCE { version Version, algorithm AlgorithmIdentifier, PrivateKey BIT STRING } AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL }因此,对于RSA私钥,OID是1.2.840.113549.1.1.1,并且有一个RSAPrivateKey作为PrivateKey密钥数据bitstring.
相反BEGIN RSA PRIVATE KEY,它始终指定RSA密钥,因此不包括密钥类型OID.BEGIN RSA PRIVATE KEY是PKCS#1:
RSA私钥文件(PKCS#1)
RSA私钥PEM文件特定于RSA密钥.
它以标签开头和结尾:
Run Code Online (Sandbox Code Playgroud)-----BEGIN RSA PRIVATE KEY----- BASE64 ENCODED DATA -----END RSA PRIVATE KEY-----在base64编码数据中,存在以下DER结构:
Run Code Online (Sandbox Code Playgroud)RSAPrivateKey ::= SEQUENCE { version Version, modulus INTEGER, -- n publicExponent INTEGER, -- e privateExponent INTEGER, -- d prime1 INTEGER, -- p prime2 INTEGER, -- q exponent1 INTEGER, -- d mod (p1) exponent2 INTEGER, -- d mod (q-1) coefficient INTEGER, -- (inverse of q) mod p otherPrimeInfos OtherPrimeInfos OPTIONAL }
vis*_*ath 21
看看<openssl/pem.h>.它提供了可能的BEGIN标记.
复制以上链接中的内容以供快速参考:
#define PEM_STRING_X509_OLD "X509 CERTIFICATE"
#define PEM_STRING_X509 "CERTIFICATE"
#define PEM_STRING_X509_PAIR "CERTIFICATE PAIR"
#define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE"
#define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST"
#define PEM_STRING_X509_REQ "CERTIFICATE REQUEST"
#define PEM_STRING_X509_CRL "X509 CRL"
#define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY"
#define PEM_STRING_PUBLIC "PUBLIC KEY"
#define PEM_STRING_RSA "RSA PRIVATE KEY"
#define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY"
#define PEM_STRING_DSA "DSA PRIVATE KEY"
#define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY"
#define PEM_STRING_PKCS7 "PKCS7"
#define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA"
#define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY"
#define PEM_STRING_PKCS8INF "PRIVATE KEY"
#define PEM_STRING_DHPARAMS "DH PARAMETERS"
#define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS"
#define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS"
#define PEM_STRING_DSAPARAMS "DSA PARAMETERS"
#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
#define PEM_STRING_ECPARAMETERS "EC PARAMETERS"
#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
#define PEM_STRING_PARAMETERS "PARAMETERS"
#define PEM_STRING_CMS "CMS"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113053 次 |
| 最近记录: |