Openssl pkey get private: примеры (PHP)
openssl_pkey_get_private(OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key, ?string $passphrase = null): OpenSSLAsymmetricKey|falseФункция openssl_pkey_get_private() является частью модуля OpenSSL в PHP и предназначена для получения ресурса (в PHP 8 - объекта OpenSSLAsymmetricKey) закрытого ключа из строки или файла. Она используется при выполнении операций, требующих криптографической подписи, расшифровки данных или аутентификации с помощью закрытого ключа.
Функция принимает два аргумента:
- private_key (string) - строка, содержащая ключ в формате PEM, или путь к файлу с ключом.
- passphrase (string) - необязательный аргумент, парольная фраза для расшифровки ключа, если он защищен паролем. По умолчанию - пустая строка.
$privateKeyPem = <<<KEY
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC6V5A6lUk...
-----END PRIVATE KEY-----
KEY;
$keyResource = openssl_pkey_get_private($privateKeyPem);
var_dump($keyResource);
object(OpenSSLAsymmetricKey)#1 (0) {}
$key = openssl_pkey_get_private('file:///path/to/encrypted.key', 'myPass123');
if ($key === false) {
echo 'Ошибка: ' . openssl_error_string();
} else {
echo 'Ключ успешно загружен';
}
Ключ успешно загружен
Используется для получения ресурса открытого ключа. Применяется при проверке подписи или шифровании данных.
Создает новую пару закрытого и открытого ключей. Полезно при генерации ключевых пар программно.
Алиас для openssl_pkey_get_private(). Функции идентичны.
$key = openssl_pkey_get_private('invalid_key_string');
if ($key === false) {
echo openssl_error_string();
}
error:0909006C:PEM routines:get_name:no start line
$key = openssl_pkey_get_private($encryptedKey, 'wrong_password');
if ($key === false) {
echo openssl_error_string();
}
error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
В PHP 8.0 функция возвращает объект OpenSSLAsymmetricKey вместо ресурса. Старая сигнатура сохранилась, но тип возвращаемого значения изменился. Это часть общей модернизации ресурсов в объекты.
$data = "Важные данные для подписи";
$privateKey = openssl_pkey_get_private($privateKeyPem);
// Создание подписи
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
$signatureBase64 = base64_encode($signature);
// Получение открытого ключа из закрытого
$publicKey = openssl_pkey_get_details($privateKey)['key'];
// Проверка подписи
$verified = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256);
echo $verified === 1 ? 'Подпись верна' : 'Ошибка проверки';
Подпись верна
$engine = openssl_engine_load('dynamic', 'pkcs11');
$privateKey = openssl_pkey_get_private(
'pkcs11:model=Token;id=%01',
'pin123'
);
$pkcs8Key = "-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhki...\n-----END ENCRYPTED PRIVATE KEY-----";
$key = openssl_pkey_get_private($pkcs8Key, 'strongPassword');from cryptography.hazmat.primitives import serialization
with open("private_key.pem", "rb") as key_file:
private_key = serialization.load_pem_private_key(
key_file.read(),
password=b'passphrase'
)
const fs = require('fs');
const crypto = require('crypto');
const privateKey = fs.readFileSync('private_key.pem', 'utf8');
const keyObject = crypto.createPrivateKey({
key: privateKey,
passphrase: 'myPass123'
});
Openssl pkey get private в MySQL
Прямого аналога нет. Работа с закрытыми ключами обычно выполняется на уровне приложения.
PHP openssl_pkey_get_private function comments
- Php openssl pkey get private - аргументы и возвращаемое значение
- Функция php openssl_pkey_get_private - описание
- openssl pkey get private - примеры
- openssl pkey get private - похожие методы на php
- openssl_pkey_get_private на js, python, mysql
- openssl pkey get private изменения php
- Примеры openssl_pkey_get_private на php