zoukankan      html  css  js  c++  java
  • php生成RSA公钥私钥方法-OPENSSL

    一,环境

      windows + php7.2

    二,方法实现

      $config = array(
          'config'            =>'D:phpwwwrootphpextrassslopenssl.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;
          }

      

    PHP中常见的问题点,知识点,及盲点。
  • 相关阅读:
    CxfInvokeUtil
    springboot+webservice(cxf和jax-ws两种方式)
    cxf 工具类转载
    Java动态调用Webservice,不生成客户端,基于soapUI
    转载 CXF动态调用webservice
    spring gzip 静态压缩优化
    sql server2008登录出错怎么整
    配置opencv时计算机显示丢失opencv_world300d.dll如何解决
    随记
    多态与异常处理(课后作业)
  • 原文地址:https://www.cnblogs.com/sblack/p/12120303.html
Copyright © 2011-2022 走看看