Тип процедуры: 4, ЗАШИФРОВАННЫЙ
указывает, что ключ получен из пароля, указанного RFC 1421 §4.6.1.1 сл.. По смыслу ДЭК-Инфо
, RFC 1423 старше, чем AES, и я не знаю другой ссылки, кроме исходного кода OpenSSL.
Ключ шифрования получается из пароля с использованием PBKDF1-MD5, как указано ПККС#5. Соль – это вторая часть ДЭК-Инфо
заголовок, а количество итераций равно 1. (Да, это смехотворно слабо. Всегда используйте только пароли с высокой энтропией для шифрования PEM, а не настоящие запоминающиеся пароли!) Опять же, единственная известная мне ссылка — это исходный код OpenSSL: pem_bytes_read_bio_flags
звонки PEM_do_header
который вызывает EVP_BytesToKey
.
Нет встроенного механизма проверки правильности пароля при расшифровке. Неверный пароль, скорее всего, приведет к мусору. Если вы передаете усеченный ввод инструменту, который ожидает действительный ключ RSA, он просто будет все время выдавать ошибку. Возможно, вам придется написать свой собственный инструмент.
Чтобы определить, правильно ли расшифрована имеющаяся у вас часть, проверьте, соответствует ли она формату закрытого ключа RSA, найденному внутри такого файла PEM. Этот формат указан в PKCS#1 §A.1.2. Если вы не знакомы с ASN.1, учебник Let's Encrypt ASN.1 должно помочь, и, конечно, вы должны посмотреть на некоторые примеры.Закрытый ключ RSA начинается с 0x30 (индикатор последовательности), затем длина (обычно 0x82 и еще два байта) целого, затем 0x02 0x01 0x00 (кодирование версии как целое число ASN.1), затем (для 2048 -битный показатель, например) 0x02 0x82 0x01 0x01 0x00 и 256 байт значения показателя степени, затем 0x02 0x03 0x01 0x00 0x01 для общедоступного показателя степени 65537 и т. д.