• 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中常见的问题点,知识点,及盲点。
  • 相关阅读:
    Linux 目录结构
    date命令--修改linux系统时间
    uniq linux下去除重复行命令
    Linux查看程序端口占用情况
    openfire连接登陆优化方案
    hdu 4848 搜索+剪枝 2014西安邀请赛
    经常使用ARM汇编指令
    一维DFT
    C++ lambda 表达式传递的变量默认不可变
    wm命令用法及LCD显示图标大小不正常时解决的方法
  • 原文地址:https://www.cnblogs.com/sblack/p/12120303.html
Copyright © 2020-2023  润新知