Xem https://pologistssl.org/kb/cryptography/asn1-key-strucenses-in-der-and-pem (tìm kiếm trang "BEGIN RSA PRIVATE KEY") ( liên kết lưu trữ cho hậu thế, chỉ trong trường hợp).
BEGIN RSA PRIVATE KEY
là PKCS # 1 và chỉ là khóa RSA. Nó thực chất chỉ là đối tượng chính từ PKCS # 8, nhưng không có phiên bản hoặc mã định danh thuật toán ở phía trước. BEGIN PRIVATE KEY
là PKCS # 8 và chỉ ra rằng loại khóa được bao gồm trong chính dữ liệu chính. Từ liên kết:
Dữ liệu được mã hóa PKCS # 8 không được mã hóa bắt đầu và kết thúc bằng các thẻ:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
Trong dữ liệu được mã hóa base64, cấu trúc DER sau đây có mặt:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Vì vậy, đối với khóa riêng RSA, OID là 1.2.840.113549.1.1.1 và có RSAPrivateKey làm chuỗi bit dữ liệu của khóa PrivateKey.
Trái ngược với BEGIN RSA PRIVATE KEY
, luôn chỉ định khóa RSA và do đó không bao gồm loại khóa OID. BEGIN RSA PRIVATE KEY
là PKCS#1
:
Tệp khóa riêng RSA (PKCS # 1)
Tệp PEM của khóa riêng RSA dành riêng cho các khóa RSA.
Nó bắt đầu và kết thúc với các thẻ:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
Trong dữ liệu được mã hóa base64, cấu trúc DER sau đây có mặt:
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
}