gpt4 book ai didi

openssl - "BEGIN RSA PRIVATE KEY"和 "BEGIN PRIVATE KEY"之间的区别

转载 作者:行者123 更新时间:2023-12-03 04:29:51 34 4
gpt4 key购买 nike

嗨,我正在编写一个程序,该程序从 .pem 文件导入私钥并创建一个私钥对象以供稍后使用。我遇到的问题是一些 pem 文件头以

开头
-----BEGIN PRIVATE KEY-----

而其他人则以

开头
-----BEGIN RSA PRIVATE KEY-----

通过我的搜索,我知道第一个是 PKCS#8 格式,但我不知道另一个属于什么格式。

最佳答案

参见https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (在页面中搜索“BEGIN RSA PRIVATE KEY”)(archive link 供后代使用,以防万一)。

BEGIN RSA PRIVATE KEY 是 PKCS#1,只是一个 RSA key 。它本质上只是 PKCS#8 中的 key 对象,但前面没有版本或算法标识符。 BEGIN PRIVATE KEY 是 PKCS#8,表示 key 类型包含在 key 数据本身中。来自链接:

The unencrypted PKCS#8 encoded data starts and ends with the tags:

-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----

Within the base64 encoded data the following DER structure is present:

PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}

AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}

So for an RSA private key, the OID is 1.2.840.113549.1.1.1 and there is a RSAPrivateKey as the PrivateKey key data bitstring.

BEGIN RSA PRIVATE KEY 相反,后者始终指定 RSA key ,因此不包含 key 类型 OID。 BEGIN RSA PRIVATE KEYPKCS#1:

RSA Private Key file (PKCS#1)

The RSA private key PEM file is specific for RSA keys.

It starts and ends with the tags:

-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----

Within the base64 encoded data the following DER structure is present:

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
}

关于openssl - "BEGIN RSA PRIVATE KEY"和 "BEGIN PRIVATE KEY"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20065304/

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