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,
    ?string $digest_algo = null
): 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.

digest_algo
Алгоритм хеширования для схемы дополнения OAEP (англ. Optimal Asymmetric Encryption Padding — оптимальное асимметричное шифрование с дополнением). При передаче значения null функция выбирает алгоритм по умолчанию.

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

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

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

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

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

Добавить

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

up
13
wfredkNOSPAM at L5DevelopmentNOSPAM dot com
23 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