Как известно, открытый ключ состоит из открытого экспонента и модуля.
Мои вопросы:
Как сгенерировать сертификат DER / PEM из общедоступного показателя и модуля RSA?
Заранее большое спасибо.
С публичным показателем и модулем лучшее, что вы могли бы надеяться сделать, это получить что-то вроде этого:
-----BEGIN PUBLIC KEY----- MIGGAoGAfHlcdrcuOK6C02rbGR3SgV/ZJ2wnTiFBguh5FHduoB6LcZz49LIC/KcIiH/TckK8GxQd oJ7wHCPBpNiumrlC6caj/C8jO/HZ3cb12Wuk4gUuJq1lg5+HTv4KRJ9pFeEFQqS6X+BTztY+EoRx uc8MlLXS4PUeouwd9Ios2K0Y5/sCASU= -----END PUBLIC KEY-----
Тем не менее, обычно файлы DER / PEM используются для хранения закрытых ключей, и вы не сможете получить частный экспонент, когда все, что у вас есть, является общедоступным. Если, однако, это то, что вы ищете, дайте мне знать, и я могу опубликовать дополнительные инструкции о том, как получить его от модуля / общественного экспонента!
edit: Вот как я это сделаю:
<?php include('Crypt/RSA.php'); $modulus = new Math_BigInteger($modulusBinaryString, 256); $exponent = new Math_BigInteger($exponentBinaryString, 256); $rsa = new Crypt_RSA(); $rsa->modulus = $modulus; $rsa->exponent = $exponent; $rsa->publicExponent = $exponent; $rsa->k = strlen($rsa->modulus->toBytes()); echo $rsa->getPublicKey(CRYPT_RSA_PRIVATE_FORMAT_PKCS1); ?>
в<?php include('Crypt/RSA.php'); $modulus = new Math_BigInteger($modulusBinaryString, 256); $exponent = new Math_BigInteger($exponentBinaryString, 256); $rsa = new Crypt_RSA(); $rsa->modulus = $modulus; $rsa->exponent = $exponent; $rsa->publicExponent = $exponent; $rsa->k = strlen($rsa->modulus->toBytes()); echo $rsa->getPublicKey(CRYPT_RSA_PRIVATE_FORMAT_PKCS1); ?>
Я использую phpseclib, чистую реализацию PHP RSA .