См. https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (поиск по разделу «НАЧАЛЬНЫЙ КЛЮЧ KEY») (archive link для потомков, на всякий случай).
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 кодированных данных следующая структура МЭДА присутствует:
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, и в качестве строковой строки данных ключа KeyKey есть RSAPrivateKey.
В отличие от BEGIN RSA PRIVATE KEY
, который всегда указывает ключ RSA и, следовательно, не включает идентификатор типа ключа. BEGIN RSA PRIVATE KEY
является PKCS#1
:
RSA Private Key файл (PKCS # 1)
файл закрытого ключа PEM RSA является специфичным для ключей RSA.
Она начинается и заканчивается с тегами:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
В base64 кодированные данные следующую структуру МЭД присутствует:
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
}
так, является ли какой-либо формат, который используется, кроме этих двух, и если есть, как я могу определить его из заголовка? – monim
Я бы предположил, что любые секретные ключевые теги, заданные в ответе звукового сигнала, - это честная игра. –
Для ключей RSA PKCS # 1 содержит параметры CRT, PKCS # 8 - нет. Вы можете подтвердить это, посмотрев размеры. PKCS # 8 меньше даже при добавлении большего количества заголовков. Если вам нужна производительность, используйте PKCS # 1. Мой тест показывает в 3 раза быстрее. –