PHP 8.4.0 RC4 available for testing

openssl_private_decrypt

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

openssl_private_decryptРасшифровывает данные закрытым ключом

Описание

openssl_private_decrypt(
    string $data,
    #[\SensitiveParameter] string &$decrypted_data,
    #[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key,
    int $padding = OPENSSL_PKCS1_PADDING
): bool

Функция openssl_private_decrypt() расшифровывает данные data, которые раньше зашифровали функцией openssl_public_encrypt(), и сохраняет результат в параметре decrypted_data.

Функцией пользуются, например, для расшифровки данных, чтобы удостовериться в отправителе сообщения.

Список параметров

data

decrypted_data

private_key

В параметр private_key передают закрытый ключ, который соответствует открытому ключу, которым зашифровали данные.

padding

Параметр padding принимает значение из следующего списка: OPENSSL_PKCS1_PADDING, OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING, OPENSSL_NO_PADDING.

Возвращаемые значения

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Список изменений

Версия Описание
8.0.0 Параметрprivate_key теперь принимает экземпляр OpenSSLAsymmetricKey или OpenSSLCertificate; раньше принимался ресурс (resource) типа OpenSSL key или OpenSSL X.509.

Смотрите также

Добавить

Примечания пользователей 1 note

up
13
wfredkNOSPAM at L5DevelopmentNOSPAM dot com
22 years ago
Encrypt using public key, decrypt using private key.

Use this to store stuff in your database: Unless someone
has your private key, the database contents are useless.

Also, use this for sending to a specific individual: Get
their public key, encrypt the message, only they can use
their private key to decode it.

<?php
echo "Source: $source";
$fp=fopen("/path/to/certificate.crt","r");
$pub_key=fread($fp,8192);
fclose($fp);
openssl_get_publickey($pub_key);
/*
* NOTE: Here you use the $pub_key value (converted, I guess)
*/
openssl_public_encrypt($source,$crypttext,$pub_key);
echo
"String crypted: $crypttext";

$fp=fopen("/path/to/private.key","r");
$priv_key=fread($fp,8192);
fclose($fp);
// $passphrase is required if your key is encoded (suggested)
$res = openssl_get_privatekey($priv_key,$passphrase);
/*
* NOTE: Here you use the returned resource value
*/
openssl_private_decrypt($crypttext,$newsource,$res);
echo
"String decrypt : $newsource";
?>
To Top