Дивіться https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (пошукайте на сторінці "ПОЧАТИ КЛЮЧ ДЛЯ ПРАВИ RSA") ( архів посилання для нащадків, про всяк випадок).
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 KEY
є PKCS#1
:
Файл приватного ключа RSA (ПКС №1)
Файл PEM приватного ключа RSA специфічний для ключів 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
}