基于PHP RSA密文過長加密解密 越過1024的解決方法
更新時(shí)間:2018年03月21日 09:11:14 作者:httpp886
下面小編就為大家分享一篇基于PHP RSA密文過長加密解密 越過1024的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
如下所示:
<?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);//這個(gè)函數(shù)可用來判斷私鑰是否是可用的,可用返回資源id Resource id $this->pu_key = openssl_pkey_get_public($this->public_key);//這個(gè)函數(shù)可用來判斷公鑰是否是可用的 // 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);//加密后的內(nèi)容通常含有特殊字符,需要編碼轉(zhuǎn)換下,在網(wǎng)絡(luò)間通過url傳輸時(shí)要注意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);//加密后的內(nèi)容通常含有特殊字符,需要編碼轉(zhuǎn)換下,在網(wǎng)絡(luò)間通過url傳輸時(shí)要注意base64編碼是否是url安全的 return $encrypted; }
//加密碼時(shí)把特殊符號(hào)替換成URL可以帶的內(nèi)容 function urlsafe_b64encode($string) { $data = base64_encode($string); $data = str_replace(array('+','/','='),array('-','_',''),$data); return $data; } //解密碼時(shí)把轉(zhuǎn)換后的符號(hào)替換特殊符號(hào) function urlsafe_b64decode($string) { $data = str_replace(array('-','_'),array('+','/'),$string); $mod4 = strlen($data) % 4; if ($mod4) { $data .= substr('====', $mod4); } return base64_decode($data); } //私鑰加密的內(nèi)容通過公鑰可用解密出來 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);//私鑰加密的內(nèi)容通過公鑰可用解密出來 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; } }
不用我多寫什么了吧,有問題可以直接聯(lián)系我。
以上這篇基于PHP RSA密文過長加密解密 越過1024的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- 淺談PHP SHA1withRSA加密生成簽名及驗(yàn)簽
- PHP7.1實(shí)現(xiàn)的AES與RSA加密操作示例
- ThinkPHP實(shí)現(xiàn)的rsa非對(duì)稱加密類示例
- PHP封裝的非對(duì)稱加密RSA算法示例
- PHP實(shí)現(xiàn)RSA加解密算法示例(生成密鑰位數(shù)為1024位的方法)
- PHP的RSA加密解密方法以及開發(fā)接口使用
- PHP檢測接口Traversable用法詳解
- PHP實(shí)現(xiàn)的MD5結(jié)合RSA簽名算法實(shí)例
- PHP實(shí)現(xiàn)RSA簽名生成訂單功能【支付寶示例】
- php rsa 加密,解密,簽名,驗(yàn)簽詳解
- php基于openssl的rsa加密解密示例
- PHP rsa加密解密使用方法
- php實(shí)現(xiàn)RSA加密類實(shí)例
- 詳解PHP使用非對(duì)稱加密算法RSA
相關(guān)文章
PHP Memcached + APC + 文件緩存封裝實(shí)現(xiàn)代碼
PHP Memcached + APC + 文件緩存封裝實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-03-03基于PHP安裝zip拓展,以及l(fā)ibzip安裝的問題
下面小編就為大家分享一篇基于PHP安裝zip拓展,以及l(fā)ibzip安裝的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03提高PHP編程效率的53個(gè)要點(diǎn)(經(jīng)驗(yàn)小結(jié))
下面是php老手整理的一些開發(fā)經(jīng)驗(yàn)之談,提高php的執(zhí)行效率。2010-09-09php中實(shí)現(xiàn)字符串翻轉(zhuǎn)的方法
本文主要介紹了實(shí)現(xiàn)php字符串翻轉(zhuǎn)的方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02PHP 返回13位時(shí)間戳的實(shí)現(xiàn)代碼
下面小編就為大家?guī)硪黄狿HP 返回13位時(shí)間戳的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05php swoole多進(jìn)程/多線程用法示例【基于php7nts版】
這篇文章主要介紹了php swoole多進(jìn)程/多線程用法,結(jié)合實(shí)例形式分析了基于php7nts版使用swoole進(jìn)行多線程創(chuàng)建、調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2019-08-08