当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-05 16:42:41 浏览: 评论:0 

下面小编就为大家分享一篇基于PHP RSA密文过长加密解密 越过1024的解决方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

如下所示:

  1. <?php 
  2. namespace helpers; 
  3.  
  4. class OpensslRSA{ 
  5.  
  6.  //echo $private_key 私钥; 
  7.  public $private_key = '-----BEGIN RSA PRIVATE KEY----- 
  8. MIICXQIBAAKBgQC+L7ENzBHxKOqjuFHPFKlAt40BatVZhUAHw/G05XshpTGqm9Rv 
  9. 8wG0EAbFbdo9PuB8DiXdPQLyIfaqkTgpsPjJ1Ow7WKxmYbqZN5IW/GN+TyFWP+MB 
  10. 2W6IBLPWBDvAl2NJlmU8j3LCPJW1dH4zP1OitkxZMyUuUYYfPuOtO9RJ2wIDAQAB 
  11. AoGAUFCbmJQBT7JTxGfmRGkZQLdC2MJg7rkS3TSmMhpm8UJtwvqjr9MTeRL7iQxn 
  12. CU4wRrNC0jcds1sca9N/wDt4FCkCala+bg7mwQuPpg5QhXelfFr88ibRnP8y8LmZ 
  13. 7PPNqx9c4jivhMzJrzNh3luqg6awjsig2w3+EW1/Ubb30AECQQDshTvyc5mpDgiO 
  14. 4g8q1ztszszL9eCp+IjlUaN51vC3Nj1eXpjbtdSZ0JVKrDdhKcd3rEZVYzMQN/lI 
  15. pyq85e/bAkEAzdmN6TF3Y1h3LouumCy6+61ChTFrl/yjw13CGApmAQHhEVyANHr7 
  16. NjoxP06eimzn7KHff/eYxd1Emf1SYA8uAQJBAN1ibFUpLRgXAZ20LNw9r+rNutXi 
  17. ZJLUBlcXTjv6G0ByLYkKZGuqy7/ZhBPsFL4GnCUBBKhh/ObebaA6kH9VfmcCQGfg 
  18. 0WxMOiM4EWy7sG+6ouE+ncL5HYKlSz7boYbgOHlpqVpJg6j4Jq1G0HNSCU9xhdg0 
  19. F8VL/RxcfLH41AkFoAECQQCR8NDB3BgHqyJfarKKMWQ3qrXHaLfBKExMrpQ8MDzs 
  20. MlSBzFOnucufo110lSgjdRlgr8smtU2hx9gXFIqxvfWF 
  21. -----END RSA PRIVATE KEY-----'; 
  22.  
  23.  //公钥 
  24.  public $public_key = '-----BEGIN PUBLIC KEY----- 
  25. MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+L7ENzBHxKOqjuFHPFKlAt40B 
  26. atVZhUAHw/G05XshpTGqm9Rv8wG0EAbFbdo9PuB8DiXdPQLyIfaqkTgpsPjJ1Ow7 
  27. WKxmYbqZN5IW/GN+TyFWP+MB2W6IBLPWBDvAl2NJlmU8j3LCPJW1dH4zP1OitkxZ 
  28. MyUuUYYfPuOtO9RJ2wIDAQAB 
  29. -----END PUBLIC KEY-----'; 
  30.  
  31. public $pi_key
  32.  public $pu_key
  33.  
  34.  //判断公钥和私钥是否可用 
  35.  public function __construct() 
  36.  { 
  37.   $this->pi_key = openssl_pkey_get_private($this->private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id 
  38.   $this->pu_key = openssl_pkey_get_public($this->public_key);//这个函数可用来判断公钥是否是可用的 
  39.   // print_r($this->pi_key);echo "\n"; 
  40.   // print_r($this->pu_key);echo "\n"; 
  41.  } 
  42.  
  43.  //私钥加密 
  44.  /*public function PrivateEncrypt($data){ 
  45.   openssl_private_encrypt($data,$encrypted,$this->pi_key); 
  46.   $encrypted = $this->urlsafe_b64encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 
  47.   return $encrypted; 
  48.  }*/ 
  49.  
  50.  public function PrivateEncrypt($data){ 
  51.   // openssl_private_encrypt($data,$encrypted,$this->pi_key); 
  52.   $crypto = ''
  53.   foreach (str_split($data, 117) as $chunk) { 
  54.    openssl_private_encrypt($chunk$encryptData$this->pi_key); 
  55.    $crypto .= $encryptData
  56.   } 
  57.   $encrypted = $this->urlsafe_b64encode($crypto);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 
  58.   return $encrypted
  59.  } 
  60.  
  61. //加密码时把特殊符号替换成URL可以带的内容 
  62.  function urlsafe_b64encode($string) { 
  63.   $data = base64_encode($string); 
  64.   $data = str_replace(array('+','/','='),array('-','_',''),$data); 
  65.   return $data
  66.  } 
  67.  
  68.  //解密码时把转换后的符号替换特殊符号 
  69.  function urlsafe_b64decode($string) { 
  70.   $data = str_replace(array('-','_'),array('+','/'),$string); 
  71.   $mod4 = strlen($data) % 4; 
  72.   if ($mod4) { 
  73.    $data .= substr('===='$mod4); 
  74.   } 
  75.   return base64_decode($data); 
  76.  } 
  77.  
  78.  //私钥加密的内容通过公钥可用解密出来 
  79.  public function PublicDecrypt($encrypted){ 
  80.   // $encrypted = $this->urlsafe_b64decode($encrypted); 
  81.   $crypto = ''
  82.   foreach (str_split($this->urlsafe_b64decode($encrypted), 128) as $chunk) { 
  83.    openssl_public_decrypt($chunk$decryptData$this->pu_key); 
  84.    $crypto .= $decryptData
  85.   } 
  86.   //openssl_public_decrypt($encrypted,$decrypted,$this->pu_key);//私钥加密的内容通过公钥可用解密出来 
  87.   return $crypto
  88.  } 
  89.  
  90.  //公钥加密 
  91.  public function PublicEncrypt($data){ 
  92.   //openssl_public_encrypt($data,$encrypted,$this->pu_key);//公钥加密 
  93.   $crypto = ''
  94.   foreach (str_split($data, 117) as $chunk) { 
  95.    openssl_public_encrypt($chunk$encryptData$this->pu_key); 
  96.    $crypto .= $encryptData
  97.   } 
  98.   $encrypted = $this->urlsafe_b64encode($crypto); 
  99.   return $encrypted
  100.  } 
  101.  
  102.  //私钥解密 
  103.  public function PrivateDecrypt($encrypted
  104.  { 
  105.   $crypto = ''
  106.   foreach (str_split($this->urlsafe_b64decode($encrypted), 128) as $chunk) { 
  107.    openssl_private_decrypt($chunk$decryptData$this->pi_key); 
  108.    $crypto .= $decryptData
  109.   } 
  110.   //$encrypted = $this->urlsafe_b64decode($encrypted); 
  111.   //openssl_private_decrypt($encrypted,$decrypted,$this->pi_key); 
  112.   return $crypto
  113.  } 

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

Tags: RSA密文 PHP加密解密

分享到: