Преобразование asn1 в base64 в C#

#c# #certificate #asn.1 #x509certificate2

#c# #сертификат #asn.1 #x509certificate2

Вопрос:

Есть ли способ преобразовать закрытый ключ X509Certificate в кодировке ASN.1 в формат Base64 с использованием кода C #?

Комментарии:

1. что у вас есть на данный момент? необработанный двоичный файл? из XML-набора данных?

2. @Marc Gravell: как XmlString, так и необработанные байты. Спасибо.

Ответ №1:

С другой стороны, возможно, я не понял ваш вопрос по первому ответу. Если вы хотите преобразовать ключевые данные в формат, аналогичный .pem-файлам, вам нужно сделать что-то подобное, как в этой статье о создании .pem-файлов

Комментарии:

1. Неработающая ссылка:-0

Ответ №2:

Вы должны попытаться объединить вместе свойство X509Certificate2.PrivateKey и метод RSA.FromXmlString.

Я думаю, что вы можете загрузить данные из ASN.1 с помощью RSA.FromXmlString, а затем установить свойство X509Certificate2.PrivateKey для результирующего объекта RSA. После этого вы можете использовать один из методов экспорта X509Certificate2 () для экспорта вашего ключа.

Если вам просто нужно преобразовать кодированный ключ ASN.1 DER в формат Base64 (.pem), вам просто нужно закодировать массив двоичных байтов в Base64 (с System.Преобразовать.ToBase64String()) и добавить верхний / нижний колонтитул для результата:

-----ЗАПУСК ЗАКРЫТОГО КЛЮЧА RSA -----
данные с кодированным ключом отправляются сюда
-----ЗАКРЫТЬ ЗАКРЫТЫЙ КЛЮЧ RSA-----

Комментарии:

1. Да, я знал об этом — но функция Export() экспортирует весь сертификат, и мне нужен только закрытый ключ.

2. Я считаю, что если у вас есть массив байтов закрытого ключа, вам просто нужно закодировать его в base64 (возможно, с помощью System. Преобразовать. ToBase64String()) и добавить к нему верхний и нижний колонтитулы.