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中常见的问题点,知识点,及盲点。
  • 相关阅读:
    软件设计项目进展01 2019/8/19
    mysql中使用utf-8乱码
    mysql学习
    eclipse中怎么查看jsp生成的java代码
    tomcat配置出现问题
    关掉win10下面的ctrl+alt+up/dowm
    java程序运行时内存分析
    java内部类
    Struts2 ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging
    win10下 Edge和IE浏览器都不能上网,而其他浏览器可以。怎么办?
  • 原文地址:https://www.cnblogs.com/sblack/p/12120303.html
Copyright © 2011-2022 走看看