(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_pkey_new — Генерирует новый закрытый ключ
Функция openssl_pkey_new() создаёт новый закрытый ключ. Пример на этой странице показывает, как получить открытую часть ключа.
Замечание: Для корректной работы этой функции должен существовать правильный openssl.cnf. Для более подробной информации смотрите замечания под разделом установки.
options
Через опцию options
выполняют точную настройку
параметров генерации ключа генерации ключа, например указывают число битов.
Подробнее о параметре options
рассказывает описание функции openssl_csr_new().
При успешном выполнении функция возвращает экземпляр класса OpenSSLAsymmetricKey
для закрытого ключа или false
, если возникла ошибка.
Версия | Описание |
---|---|
8.0.0 |
В случае успешного выполнения функция возвращает экземпляр OpenSSLAsymmetricKey;
раньше возвращался ресурс (resource) типа OpenSSL key .
|
7.1.0 |
Для параметра options добавили ключ curve_name ,
чтобы создавать EC-ключи на основе алгоритмов эллиптических кривых.
|
Пример #1 Пример получения открытой части ключа из закрытого ключа
<?php
$private_key = openssl_pkey_new();
$public_key_pem = openssl_pkey_get_details($private_key)['key'];
echo $public_key_pem, PHP_EOL;
$public_key = openssl_pkey_get_public($public_key_pem);
var_dump($public_key);
?>
Вывод приведённого примера будет похож на:
// Вывод до PHP 8.0.0; обратите внимание, функция возвращает ресурс -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwknBFEherZe74BiRjTFA hqwZ1SK7brwq7C/afnLXKhRR7jnrpfM0ypC46q8xz5UZswenZakJ7kd5fls+r4Bv 3P8XsKYLTh2m1GiWQhV1g77cNIN4qNWh70PiDO3fB2446o1LBgToQYuRZS5YQRfJ rVD0ysgtVcCU9tjaey28HlgApOpYFTaaKPj2MBmEYpMC+kG2HhL12GfpHUi2eiXI dXT2WskWHWvUrmQ7fJIfI92JlDokV62DH/q1oiedLs9OPNb0rL1aAmYdzaVN6XNH x/o4Lh125v2vAPV9E3fZCDc/HDEUaahpjanMiCQEgEDp5Hr+CRkvERT5/ydN+p08 5wIDAQAB -----END PUBLIC KEY----- resource(6) of type (OpenSSL key) // Вывод с PHP 8.0.0; обратите внимание, функция возвращает объект -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwknBFEherZe74BiRjTFA hqwZ1SK7brwq7C/afnLXKhRR7jnrpfM0ypC46q8xz5UZswenZakJ7kd5fls+r4Bv 3P8XsKYLTh2m1GiWQhV1g77cNIN4qNWh70PiDO3fB2446o1LBgToQYuRZS5YQRfJ rVD0ysgtVcCU9tjaey28HlgApOpYFTaaKPj2MBmEYpMC+kG2HhL12GfpHUi2eiXI dXT2WskWHWvUrmQ7fJIfI92JlDokV62DH/q1oiedLs9OPNb0rL1aAmYdzaVN6XNH x/o4Lh125v2vAPV9E3fZCDc/HDEUaahpjanMiCQEgEDp5Hr+CRkvERT5/ydN+p08 5wIDAQAB -----END PUBLIC KEY----- object(OpenSSLAsymmetricKey)#2 (0) { }