1. <th id="k6j97"></th>
      2. <ol id="k6j97"></ol><s id="k6j97"></s>
      3. 主頁 > 知識庫 > 基于PHP RSA密文過長加密解密 越過1024的解決方法

        基于PHP RSA密文過長加密解密 越過1024的解決方法

        熱門標簽:銀行業務 電子圍欄 Mysql連接數設置 阿里云 服務器配置 團購網站 科大訊飛語音識別系統 Linux服務器

        如下所示:

        ?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;
         }
        }

        不用我多寫什么了吧,有問題可以直接聯系我。

        以上這篇基于PHP RSA密文過長加密解密 越過1024的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

        您可能感興趣的文章:
        • 淺談PHP SHA1withRSA加密生成簽名及驗簽
        • PHP7.1實現的AES與RSA加密操作示例
        • ThinkPHP實現的rsa非對稱加密類示例
        • PHP封裝的非對稱加密RSA算法示例
        • PHP實現RSA加解密算法示例(生成密鑰位數為1024位的方法)
        • PHP的RSA加密解密方法以及開發接口使用
        • PHP檢測接口Traversable用法詳解
        • PHP實現的MD5結合RSA簽名算法實例
        • PHP實現RSA簽名生成訂單功能【支付寶示例】
        • php rsa 加密,解密,簽名,驗簽詳解
        • php基于openssl的rsa加密解密示例
        • PHP rsa加密解密使用方法
        • php實現RSA加密類實例
        • 詳解PHP使用非對稱加密算法RSA

        標簽:江蘇 廣元 大理 衢州 棗莊 衡水 蚌埠 萍鄉

        巨人網絡通訊聲明:本文標題《基于PHP RSA密文過長加密解密 越過1024的解決方法》,本文關鍵詞  ;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
      4. 相關文章
      5. 收縮
        • 微信客服
        • 微信二維碼
        • 電話咨詢

        • 400-1100-266