openssl_private_decrypt()
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
使用私钥解密数据
说明
openssl_private_decrypt(string $data,string &$decrypted, mixed $key[,int $padding= OPENSSL_PKCS1_PADDING]): boolCaution
本函数并不会生成安全加密的值,不应用于加密用途。若需要安全加密的值,考虑使用openssl_random_pseudo_bytes()。
openssl_private_decrypt()解密先前通过openssl_public_encrypt()函数加密的$data并将结果保存至$decrypted变量中。
你可以用该函数来解密只对你可用的数据。
参数
- $data
- $decrypted
- $key
$key必须是和用来加密数据所用公钥对应的私钥。
- $padding
$padding可以是如下值:
OPENSSL_PKCS1_PADDING
,OPENSSL_SSLV23_PADDING
,OPENSSL_PKCS1_OAEP_PADDING
,OPENSSL_NO_PADDING
.
返回值
成功时返回TRUE
,或者在失败时返回FALSE
。
参见
openssl_public_encrypt()
使用公钥加密数据openssl_public_decrypt()
使用公钥解密数据
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"; ?>
of course you have to add the openssl extension to you php environment.