php生成RSA公鑰私鑰方法-OPENSSL


一,環境

  windows + php7.2

二,方法實現

  $config = array(
      'config'            =>'D:\php\wwwroot\php\extras\ssl\openssl.cnf',  //安裝PHP7會自帶這個配置文件
      'digest_alg'        => 'sha256',                 //可以用openssl_get_md_methods() 查看支持的加密方法
      'private_key_bits'     => 2048,
      'private_key_type'     => OPENSSL_KEYTYPE_RSA,
  );
  $res = openssl_pkey_new($config);
  openssl_pkey_export($res, $private_key_pem,null,$config);

  $details = openssl_pkey_get_details($res);
  $public_key_pem = $details['key'];

  echo '<pre>';
  var_dump(array('privKey' => $private_key_pem, 'pubKey' => $public_key_pem));

  

 

 三,生成的公鑰私鑰驗證

  $data = "PHP";

  openssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256);

  $r = openssl_verify($data, $signature, $public_key_pem, OPENSSL_ALGO_SHA256);
  var_dump($r);

四,用OPENSSL實現可逆的加密運算替代php7.1之前的mcrypt

  $iv = openssl_random_pseudo_bytes(16);

  function encrypt($input) {
          $data = openssl_encrypt($input, 'AES-256-CBC', 'password', OPENSSL_RAW_DATA,$iv));
          $data = base64_encode($data);
          return $data;
      }
 
  function decrypt($input) {
          $decrypted = openssl_decrypt(base64_decode($input), 'AES-256-CBC', 'password', OPENSSL_RAW_DATA,$iv);
          return $decrypted;
      }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM