• <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實現RSA加密類的實例解析

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

        PHP實現RSA加密類的實例解析

          * RSA算法類

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

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

          *

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

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

          *

          * @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

          }

          /**

          * 構造函數

          *

          * @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

        【PHP實現RSA加密類的實例解析】相關文章:

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

        淺析php函數的實例06-08

        PHP中curl的使用實例07-31

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

        PHP url 加密解密函數代碼方法10-25

        將php實現過濾UBB代碼09-11

        探討PHP函數的實現原理及性能07-07

        php解析ini配置文件07-13

        PHP中關于類的定義10-02

        關于php堆排序實現原理與應用方法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. 天天亚洲欧美日韩久久 | 在线日本亚洲yy6080 | 日韩精品旡码一区二区三区 | 色先锋影音a∨在线资源网 亚洲专区日本专区 | 最新版天堂资源高清在线 | 亚洲欧美日韩动漫一区二区在线 |