PHP RSA密文加密解密步驟詳解

來源:互聯網
上載者:User
下面小編就為大家分享一篇基於PHP RSA密文過長加密解密 越過1024的解決方案,具有很好的參考價值,希望對大家有所協助。一起跟隨小編過來看看吧

如下所示:

<?phpnamespace helpers;class OpensslRSA{ //echo $private_key 私密金鑰; public $private_key = '-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQC+L7ENzBHxKOqjuFHPFKlAt40BatVZhUAHw/G05XshpTGqm9Rv8wG0EAbFbdo9PuB8DiXdPQLyIfaqkTgpsPjJ1Ow7WKxmYbqZN5IW/GN+TyFWP+MB2W6IBLPWBDvAl2NJlmU8j3LCPJW1dH4zP1OitkxZMyUuUYYfPuOtO9RJ2wIDAQABAoGAUFCbmJQBT7JTxGfmRGkZQLdC2MJg7rkS3TSmMhpm8UJtwvqjr9MTeRL7iQxnCU4wRrNC0jcds1sca9N/wDt4FCkCala+bg7mwQuPpg5QhXelfFr88ibRnP8y8LmZ7PPNqx9c4jivhMzJrzNh3luqg6awjsig2w3+EW1/Ubb30AECQQDshTvyc5mpDgiO4g8q1ztszszL9eCp+IjlUaN51vC3Nj1eXpjbtdSZ0JVKrDdhKcd3rEZVYzMQN/lIpyq85e/bAkEAzdmN6TF3Y1h3LouumCy6+61ChTFrl/yjw13CGApmAQHhEVyANHr7NjoxP06eimzn7KHff/eYxd1Emf1SYA8uAQJBAN1ibFUpLRgXAZ20LNw9r+rNutXiZJLUBlcXTjv6G0ByLYkKZGuqy7/ZhBPsFL4GnCUBBKhh/ObebaA6kH9VfmcCQGfg0WxMOiM4EWy7sG+6ouE+ncL5HYKlSz7boYbgOHlpqVpJg6j4Jq1G0HNSCU9xhdg0F8VL/RxcfLH41AkFoAECQQCR8NDB3BgHqyJfarKKMWQ3qrXHaLfBKExMrpQ8MDzsMlSBzFOnucufo110lSgjdRlgr8smtU2hx9gXFIqxvfWF-----END RSA PRIVATE KEY-----'; //公開金鑰 public $public_key = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+L7ENzBHxKOqjuFHPFKlAt40BatVZhUAHw/G05XshpTGqm9Rv8wG0EAbFbdo9PuB8DiXdPQLyIfaqkTgpsPjJ1Ow7WKxmYbqZN5IW/GN+TyFWP+MB2W6IBLPWBDvAl2NJlmU8j3LCPJW1dH4zP1OitkxZMyUuUYYfPuOtO9RJ2wIDAQAB-----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中文網其它相關文章!

推薦閱讀:

PHP基於CURL發送JSON格式字串步驟詳解

ThinkPHP架構PDO串連資料庫步驟詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.