openssl_pkey_new

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_newГенерирует новый закрытый ключ

Описание

openssl_pkey_new(?array $options = null): OpenSSLAsymmetricKey|false

Функция 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) {
}