openssl_private_decrypt
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_private_decrypt — 秘密鍵でデータを復号する
説明
openssl_private_decrypt(
string
#[\SensitiveParameter] string
#[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string
int
): bool
string
$data
,#[\SensitiveParameter] string
&$decrypted_data
,#[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string
$private_key
,int
$padding
= OPENSSL_PKCS1_PADDING
): bool
openssl_private_decrypt() は、事前に
openssl_public_encrypt() で暗号化された
data
を復号し、それを
decrypted_data
に格納します。
これを使用するのは、例えばあなたにのみ送られてきたデータを復号する場合です。
パラメータ
data
-
decrypted_data
-
private_key
-
private_key
は、 データの暗号化に使用した公開鍵と対になる秘密鍵である必要があります。 padding
-
padding
には、OPENSSL_PKCS1_PADDING
、OPENSSL_SSLV23_PADDING
、OPENSSL_PKCS1_OAEP_PADDING
、OPENSSL_NO_PADDING
が指定可能です。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 |
private_key は、
OpenSSLAsymmetricKey または
OpenSSLCertificate クラスのインスタンスを受け入れるようになりました。
これより前のバージョンでは、
OpenSSL key または
OpenSSL X.509 型のリソースを受け入れていました。
|
+add a note
User Contributed Notes 1 note
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";
?>