“BEGIN RSA PRIVATE KEY”和“BEGIN PRIVATE KEY”的区别

请参阅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 编码数据以标签开头和结尾:

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

在 base64 编码数据中,存在以下 DER 结构:

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 密钥数据位串。

BEGIN RSA PRIVATE KEY, 它始终指定 RSA 密钥相反,因此不包含密钥类型 OID。BEGIN RSA PRIVATE KEYPKCS#1

RSA 私钥文件(PKCS#1)

RSA 私钥 PEM 文件特定于 RSA 密钥。

它以标签开头和结尾:

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

在 base64 编码数据中,存在以下 DER 结构:

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
}

你可能感兴趣的:(“BEGIN RSA PRIVATE KEY”和“BEGIN PRIVATE KEY”的区别)