基于PHP RSA密文过长加密解密 越过1024的解决方法
如下所示:
public$pi_key; public$pu_key; //判断公钥和私钥是否可用 publicfunction__construct() { $this->pi_key=openssl_pkey_get_private($this->private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源idResourceid $this->pu_key=openssl_pkey_get_public($this->public_key);//这个函数可用来判断公钥是否是可用的 //print_r($this->pi_key);echo"\n"; //print_r($this->pu_key);echo"\n"; } //私钥加密 /*publicfunctionPrivateEncrypt($data){ openssl_private_encrypt($data,$encrypted,$this->pi_key); $encrypted=$this->urlsafe_b64encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 return$encrypted; }*/ publicfunctionPrivateEncrypt($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可以带的内容 functionurlsafe_b64encode($string){ $data=base64_encode($string); $data=str_replace(array('+','/','='),array('-','_',''),$data); return$data; } //解密码时把转换后的符号替换特殊符号 functionurlsafe_b64decode($string){ $data=str_replace(array('-','_'),array('+','/'),$string); $mod4=strlen($data)%4; if($mod4){ $data.=substr('====',$mod4); } returnbase64_decode($data); } //私钥加密的内容通过公钥可用解密出来 publicfunctionPublicDecrypt($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; } //公钥加密 publicfunctionPublicEncrypt($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; } //私钥解密 publicfunctionPrivateDecrypt($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; } }不用我多写什么了吧,有问题可以直接联系我。
以上这篇基于PHPRSA密文过长加密解密越过1024的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。