• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. PHP實現(xiàn)RSA加密類的實例解析

        時間:2024-10-25 09:17:35 PHP 我要投稿
        • 相關推薦

        PHP實現(xiàn)RSA加密類的實例解析

          * RSA算法類

          * 簽名及密文編碼:base64字符串/十六進制字符串/二進制字符串流

          * 填充方式: PKCS1Padding(加解密)/NOPadding(解密)

          *

          * Notice:Only accepts a single block. Block size is equal to the RSA key size!

          * 如密鑰長度為1024 bit,則加密時數(shù)據(jù)需小于128字節(jié),加上PKCS1Padding本身的11字節(jié)信息,所以明文需小于117字節(jié)

          *

          * @author: linvo

          * @version: 1.0.0

          * @date: 2013/1/23

          */

          class RSA{

          private $pubKey = null;

          private $priKey = null;

          /**

          * 自定義錯誤處理

          */

          private function _error($msg){

          die(RSA Error: . $msg); //TODO

          }

          /**

          * 構造函數(shù)

          *

          * @param string 公鑰文件(驗簽和加密時傳入)

          * @param string 私鑰文件(簽名和解密時傳入)

          */

          public function __construct($public_key_file = , $private_key_file = ){

          if ($public_key_file){

          $this->_getPublicKey($public_key_file);

          }

          if ($private_key_file){

          $this->_getPrivateKey($private_key_file);

          }

          }

          /**

          * 生成簽名

          *

          * @param string 簽名材料

          * @param string 簽名編碼(base64/hex/bin)

          * @return 簽名值

          */

          public function sign($data, $code = base64){

          $ret = false;

          if (openssl_sign($data, $ret, $this->priKey)){

          $ret = $this->_encode($ret, $code);

          }

          return $ret;

          }

          /**

          * 驗證簽名

          *

          * @param string 簽名材料

          * @param string 簽名值

          * @param string 簽名編碼(base64/hex/bin)

          * @return bool

          */

          public function verify($data, $sign, $code = base64){

          $ret = false;

          $sign = $this->_decode($sign, $code);

          if ($sign !== false) {

          switch (openssl_verify($data, $sign, $this->pubKey)){

          case 1: $ret = true; break;

          case 0:

          case -1:

          default: $ret = false;

          }

          }

          return $ret;

          }

          /**

          * 加密

          *

          * @param string 明文

          * @param string 密文編碼(base64/hex/bin)

          * @param int 填充方式(貌似php有bug,所以目前僅支持OPENSSL_PKCS1_PADDING)

          * @return string 密文

          */

          public function encrypt($data, $code = base64, $padding = OPENSSL_PKCS1_PADDING){

          $ret = false;

          if (!$this->_checkPadding($padding, en)) $this->_error(padding error);

          if (openssl_public_encrypt($data, $result, $this->pubKey, $padding)){

          $ret = $this->_encode($result, $code);

          }

          return $ret;

          }

          /**

          * 解密

          *

          * @param string 密文

          * @param string 密文編碼(base64/hex/bin)

          * @param int 填充方式(OPENSSL_P

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【PHP實現(xiàn)RSA加密類的實例解析】相關文章:

        java非對稱加密的源代碼(rsa)08-01

        淺析php函數(shù)的實例06-08

        PHP中curl的使用實例07-31

        PHP對象注入的實例分析08-27

        PHP url 加密解密函數(shù)代碼方法10-25

        將php實現(xiàn)過濾UBB代碼09-11

        探討PHP函數(shù)的實現(xiàn)原理及性能07-07

        php解析ini配置文件07-13

        PHP中關于類的定義10-02

        關于php堆排序實現(xiàn)原理與應用方法10-09

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 五月婷之综合在线 | 日本高清中文字幕阿v免费 亚洲国产日韩在线人精品 亚洲国产性色AⅤ | 亚洲日本中文字幕乱码中文 | 欧美精品专区在线观看视频 | 自偷精品精品国产日韩 | 先锋午夜影音久久 |

            PHP實現(xiàn)RSA加密類的實例解析

              * RSA算法類

              * 簽名及密文編碼:base64字符串/十六進制字符串/二進制字符串流

              * 填充方式: PKCS1Padding(加解密)/NOPadding(解密)

              *

              * Notice:Only accepts a single block. Block size is equal to the RSA key size!

              * 如密鑰長度為1024 bit,則加密時數(shù)據(jù)需小于128字節(jié),加上PKCS1Padding本身的11字節(jié)信息,所以明文需小于117字節(jié)

              *

              * @author: linvo

              * @version: 1.0.0

              * @date: 2013/1/23

              */

              class RSA{

              private $pubKey = null;

              private $priKey = null;

              /**

              * 自定義錯誤處理

              */

              private function _error($msg){

              die(RSA Error: . $msg); //TODO

              }

              /**

              * 構造函數(shù)

              *

              * @param string 公鑰文件(驗簽和加密時傳入)

              * @param string 私鑰文件(簽名和解密時傳入)

              */

              public function __construct($public_key_file = , $private_key_file = ){

              if ($public_key_file){

              $this->_getPublicKey($public_key_file);

              }

              if ($private_key_file){

              $this->_getPrivateKey($private_key_file);

              }

              }

              /**

              * 生成簽名

              *

              * @param string 簽名材料

              * @param string 簽名編碼(base64/hex/bin)

              * @return 簽名值

              */

              public function sign($data, $code = base64){

              $ret = false;

              if (openssl_sign($data, $ret, $this->priKey)){

              $ret = $this->_encode($ret, $code);

              }

              return $ret;

              }

              /**

              * 驗證簽名

              *

              * @param string 簽名材料

              * @param string 簽名值

              * @param string 簽名編碼(base64/hex/bin)

              * @return bool

              */

              public function verify($data, $sign, $code = base64){

              $ret = false;

              $sign = $this->_decode($sign, $code);

              if ($sign !== false) {

              switch (openssl_verify($data, $sign, $this->pubKey)){

              case 1: $ret = true; break;

              case 0:

              case -1:

              default: $ret = false;

              }

              }

              return $ret;

              }

              /**

              * 加密

              *

              * @param string 明文

              * @param string 密文編碼(base64/hex/bin)

              * @param int 填充方式(貌似php有bug,所以目前僅支持OPENSSL_PKCS1_PADDING)

              * @return string 密文

              */

              public function encrypt($data, $code = base64, $padding = OPENSSL_PKCS1_PADDING){

              $ret = false;

              if (!$this->_checkPadding($padding, en)) $this->_error(padding error);

              if (openssl_public_encrypt($data, $result, $this->pubKey, $padding)){

              $ret = $this->_encode($result, $code);

              }

              return $ret;

              }

              /**

              * 解密

              *

              * @param string 密文

              * @param string 密文編碼(base64/hex/bin)

              * @param int 填充方式(OPENSSL_P