• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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]): bool
    Caution

    本函数并不会生成安全加密的值,不应用于加密用途。若需要安全加密的值,考虑使用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

    参见

    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.