(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_private_decrypt — Расшифровывает данные закрытым ключом
$data,&$decrypted_data,$private_key,$padding = OPENSSL_PKCS1_PADDING ,$digest_algo = null
Функция openssl_private_decrypt() расшифровывает
данные data, которые раньше зашифровали
функцией openssl_public_encrypt() , и сохраняет результат
в параметре decrypted_data.
Функцией пользуются, например, для расшифровки данных, чтобы удостовериться в отправителе сообщения.
datadecrypted_dataprivate_key
В параметр private_key передают закрытый ключ,
который соответствует открытому ключу, которым зашифровали данные.
padding
Параметр padding принимает значение из следующего списка:
OPENSSL_PKCS1_PADDING ,
OPENSSL_SSLV23_PADDING ,
OPENSSL_PKCS1_OAEP_PADDING ,
OPENSSL_NO_PADDING .
digest_algonull функция выбирает алгоритм по умолчанию.
Функция возвращает true , если выполнилась успешно, или false , если возникла ошибка.
| Версия | Описание |
|---|---|
| 8.5.0 |
Добавили необязательный параметр digest_algo.
|
| 8.0.0 |
Параметрprivate_key теперь принимает экземпляр класса OpenSSLAsymmetricKey
или OpenSSLCertificate ;
раньше принимался ресурс (resource ) типа OpenSSL key или OpenSSL X.509.
|
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";
?>