я новичок в PHP Crypto и я использую openssl для выполнения операций шифрования.
Openssl Rsa нужен формат PEM, но у меня есть шестнадцатеричный модуль (n), частный показатель (d) и открытый показатель (e).
Как я могу сгенерировать закрытый ключ из этих компонентов?
И извините за мой английский.
Закрытые ключи RSA обычно также имеют множество других параметров. Простые числа, которые использовались для создания модуля (p и q) и других параметров, чтобы облегчить использование китайской теоремы об остатках для ускорения дешифрования. Если у вас этого нет, я бы просто создал открытый ключ. Вы можете заменить PUBLIC на PRIVATE idk.
Во всяком случае, вот код (использует phpseclib 1.0.3):
<?php
include('Crypt/RSA.php');
include('Math/BigInteger.php');
$rsa = new Crypt_RSA();
$rsa->loadKey([
'e' => new Math_BigInteger('...'), // base-10 by default
'n' => new Math_BigInteger('...') // base-10 by default
]);
echo $rsa;
Я использовал 15 как e и n (что на самом деле не является действительным комбо для целей RSA, но для демонстрационных целей это нормально) и получил это обратно:
-----BEGIN PUBLIC KEY-----
MBowDQYJKoZIhvcNAQEBBQADCQAwBgIBDwIBDw==
-----END PUBLIC KEY-----
Других решений пока нет …