Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена в нуль (т. е. она не ссылалась на экземпляр фактического объекта).
Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для 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
}
Файл «pem» на самом деле не является форматом, и различные объекты могут храниться в файлах, называемых «pem». Чаще всего эти файлы содержат либо сертификат X509 с кодировкой base64, либо объект private key с кодировкой base64.
Предполагая, что вы хотите получить сертификат X509, вы должны понять, что сертификат состоит из многих полей, только один из которых является открытым ключом. Поэтому необходимо будет определить значения других полей. Наконец, сертификат должен быть подписан с закрытым ключом.
PS. Открытый ключ RSA состоит из модуля и публичного экспонента. Каков ваш общественный экспонент?
Если ваша шестнадцатеричная строка представляет собой просто преобразование из 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
использовать программы putty , PuTTYgen делает это преобразование
Я бы использовал OpenSSL. Предполагая, что у вас есть ключ в формате DER, вы можете использовать эту команду для преобразования из DER в PEM.
openssl x509 -inform der -in input.der -out output.pem
Если вы не уверены, правильно ли вы форматировали DER (ASN.1) , попробуйте использовать этот инструмент для анализа вашего входного файла.