Преобразование RSAPublicKey в PEM [дубликат]

Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена ​​в нуль (т. е. она не ссылалась на экземпляр фактического объекта).

Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для null перед тем, как использовать.

if (myvar != null)
{
    // Go ahead and use myvar
    myvar.property = ...
}
else
{
    // Whoops! myvar is null and cannot be used without first
    // assigning it to an instance reference
    // Attempting to use myvar here will result in NullReferenceException
}
3
задан mic-kul 19 December 2010 в 22:00
поделиться

4 ответа

Файл «pem» на самом деле не является форматом, и различные объекты могут храниться в файлах, называемых «pem». Чаще всего эти файлы содержат либо сертификат X509 с кодировкой base64, либо объект private key с кодировкой base64.

Предполагая, что вы хотите получить сертификат X509, вы должны понять, что сертификат состоит из многих полей, только один из которых является открытым ключом. Поэтому необходимо будет определить значения других полей. Наконец, сертификат должен быть подписан с закрытым ключом.

PS. Открытый ключ RSA состоит из модуля и публичного экспонента. Каков ваш общественный экспонент?

6
ответ дан James K Polk 25 August 2018 в 20:40
поделиться

Если ваша шестнадцатеричная строка представляет собой просто преобразование из base64 в hex. Затем вы можете отменить его. Вот сценарий, который я сделал (в PHP), чтобы решить мой случай:

<?php

$list = array_slice($argv, 1);

foreach ($list as $file) {
    $hex = str_replace("\n", "", file_get_contents($file));
    $pem = str_replace(".hex", ".pem", $file);
    $b64 = base64_encode(hex2bin($hex));
    $fd = fopen($pem, 'w');
    fprintf($fd, "-----BEGIN PUBLIC KEY-----\n%s\n-----END PUBLIC KEY----\n", implode("\n", str_split($b64, 64)));
    fclose($fd);
}

Учитывая список файлов .hex, он преобразуется обратно в «.pem». Вы можете запустить его следующим образом:

php script.php *.hex
1
ответ дан Diogo Melo 25 August 2018 в 20:40
поделиться

использовать программы putty , PuTTYgen делает это преобразование

-1
ответ дан mpapis 25 August 2018 в 20:40
поделиться

Я бы использовал OpenSSL. Предполагая, что у вас есть ключ в формате DER, вы можете использовать эту команду для преобразования из DER в PEM.

openssl x509 -inform der -in input.der -out output.pem

Если вы не уверены, правильно ли вы форматировали DER (ASN.1) , попробуйте использовать этот инструмент для анализа вашего входного файла.

0
ответ дан weilin8 25 August 2018 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: