基于PHP RSA密文过长加密解密 越过1024的解决方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-09-05 16:42:41 浏览: 评论:0
下面小编就为大家分享一篇基于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;
- }
- }
不用我多写什么了吧,有问题可以直接联系我。
Tags: RSA密文 PHP加密解密
相关文章
- ·PHP加密解密字符串汇总(2021-05-23)
- ·PHP加密解密实例分析(2021-07-01)
- ·php结合md5实现的加密解密方法(2021-07-07)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)