• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    基于PHP RSA密文过长加密解密 越过1024的解决方法

    如下所示:

    ?php
    namespace helpers;
    
    class OpensslRSA{
    
     //echo $private_key 私钥;
     public $private_key = '-----BEGIN RSA PRIVATE KEY-----
    MIICXQIBAAKBgQC+L7ENzBHxKOqjuFHPFKlAt40BatVZhUAHw/G05XshpTGqm9Rv
    8wG0EAbFbdo9PuB8DiXdPQLyIfaqkTgpsPjJ1Ow7WKxmYbqZN5IW/GN+TyFWP+MB
    2W6IBLPWBDvAl2NJlmU8j3LCPJW1dH4zP1OitkxZMyUuUYYfPuOtO9RJ2wIDAQAB
    AoGAUFCbmJQBT7JTxGfmRGkZQLdC2MJg7rkS3TSmMhpm8UJtwvqjr9MTeRL7iQxn
    CU4wRrNC0jcds1sca9N/wDt4FCkCala+bg7mwQuPpg5QhXelfFr88ibRnP8y8LmZ
    7PPNqx9c4jivhMzJrzNh3luqg6awjsig2w3+EW1/Ubb30AECQQDshTvyc5mpDgiO
    4g8q1ztszszL9eCp+IjlUaN51vC3Nj1eXpjbtdSZ0JVKrDdhKcd3rEZVYzMQN/lI
    pyq85e/bAkEAzdmN6TF3Y1h3LouumCy6+61ChTFrl/yjw13CGApmAQHhEVyANHr7
    NjoxP06eimzn7KHff/eYxd1Emf1SYA8uAQJBAN1ibFUpLRgXAZ20LNw9r+rNutXi
    ZJLUBlcXTjv6G0ByLYkKZGuqy7/ZhBPsFL4GnCUBBKhh/ObebaA6kH9VfmcCQGfg
    0WxMOiM4EWy7sG+6ouE+ncL5HYKlSz7boYbgOHlpqVpJg6j4Jq1G0HNSCU9xhdg0
    F8VL/RxcfLH41AkFoAECQQCR8NDB3BgHqyJfarKKMWQ3qrXHaLfBKExMrpQ8MDzs
    MlSBzFOnucufo110lSgjdRlgr8smtU2hx9gXFIqxvfWF
    -----END RSA PRIVATE KEY-----';
    
     //公钥
     public $public_key = '-----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+L7ENzBHxKOqjuFHPFKlAt40B
    atVZhUAHw/G05XshpTGqm9Rv8wG0EAbFbdo9PuB8DiXdPQLyIfaqkTgpsPjJ1Ow7
    WKxmYbqZN5IW/GN+TyFWP+MB2W6IBLPWBDvAl2NJlmU8j3LCPJW1dH4zP1OitkxZ
    MyUuUYYfPuOtO9RJ2wIDAQAB
    -----END PUBLIC KEY-----';
    public $pi_key;
     public $pu_key;
    
     //判断公钥和私钥是否可用
     public function __construct()
     {
      $this->pi_key = openssl_pkey_get_private($this->private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
      $this->pu_key = openssl_pkey_get_public($this->public_key);//这个函数可用来判断公钥是否是可用的
      // print_r($this->pi_key);echo "\n";
      // print_r($this->pu_key);echo "\n";
     }
    
     //私钥加密
     /*public function PrivateEncrypt($data){
      openssl_private_encrypt($data,$encrypted,$this->pi_key);
      $encrypted = $this->urlsafe_b64encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
      return $encrypted;
     }*/
    
     public function PrivateEncrypt($data){
      // openssl_private_encrypt($data,$encrypted,$this->pi_key);
      $crypto = '';
      foreach (str_split($data, 117) as $chunk) {
       openssl_private_encrypt($chunk, $encryptData, $this->pi_key);
       $crypto .= $encryptData;
      }
      $encrypted = $this->urlsafe_b64encode($crypto);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
      return $encrypted;
     }
    //加密码时把特殊符号替换成URL可以带的内容
     function urlsafe_b64encode($string) {
      $data = base64_encode($string);
      $data = str_replace(array('+','/','='),array('-','_',''),$data);
      return $data;
     }
    
     //解密码时把转换后的符号替换特殊符号
     function urlsafe_b64decode($string) {
      $data = str_replace(array('-','_'),array('+','/'),$string);
      $mod4 = strlen($data) % 4;
      if ($mod4) {
       $data .= substr('====', $mod4);
      }
      return base64_decode($data);
     }
    
     //私钥加密的内容通过公钥可用解密出来
     public function PublicDecrypt($encrypted){
      // $encrypted = $this->urlsafe_b64decode($encrypted);
      $crypto = '';
      foreach (str_split($this->urlsafe_b64decode($encrypted), 128) as $chunk) {
       openssl_public_decrypt($chunk, $decryptData, $this->pu_key);
       $crypto .= $decryptData;
      }
      //openssl_public_decrypt($encrypted,$decrypted,$this->pu_key);//私钥加密的内容通过公钥可用解密出来
      return $crypto;
     }
    
     //公钥加密
     public function PublicEncrypt($data){
      //openssl_public_encrypt($data,$encrypted,$this->pu_key);//公钥加密
      $crypto = '';
      foreach (str_split($data, 117) as $chunk) {
       openssl_public_encrypt($chunk, $encryptData, $this->pu_key);
       $crypto .= $encryptData;
      }
      $encrypted = $this->urlsafe_b64encode($crypto);
      return $encrypted;
     }
    
     //私钥解密
     public function PrivateDecrypt($encrypted)
     {
      $crypto = '';
      foreach (str_split($this->urlsafe_b64decode($encrypted), 128) as $chunk) {
       openssl_private_decrypt($chunk, $decryptData, $this->pi_key);
       $crypto .= $decryptData;
      }
      //$encrypted = $this->urlsafe_b64decode($encrypted);
      //openssl_private_decrypt($encrypted,$decrypted,$this->pi_key);
      return $crypto;
     }
    }

    不用我多写什么了吧,有问题可以直接联系我。

    以上这篇基于PHP RSA密文过长加密解密 越过1024的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 浅谈PHP SHA1withRSA加密生成签名及验签
    • PHP7.1实现的AES与RSA加密操作示例
    • ThinkPHP实现的rsa非对称加密类示例
    • PHP封装的非对称加密RSA算法示例
    • PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法)
    • PHP的RSA加密解密方法以及开发接口使用
    • PHP检测接口Traversable用法详解
    • PHP实现的MD5结合RSA签名算法实例
    • PHP实现RSA签名生成订单功能【支付宝示例】
    • php rsa 加密,解密,签名,验签详解
    • php基于openssl的rsa加密解密示例
    • PHP rsa加密解密使用方法
    • php实现RSA加密类实例
    • 详解PHP使用非对称加密算法RSA
    上一篇:PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法)
    下一篇:PHP开发api接口安全验证的实例讲解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    基于PHP RSA密文过长加密解密 越过1024的解决方法 基于,PHP,RSA,密文,过长,加密解密,