1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

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

        時間:2020-11-25 13:24:27 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字節(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

          }

          /**

          * 構造函數

          *

          * @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加密類的實例解析】相關文章:

        1.PHP類的使用實例講解

        2.Javascript到PHP加密通訊的簡單實現方法

        3.php樹型類實例代碼

        4.java非對稱加密的源代碼(rsa)

        5.淺析php函數的實例

        6.PHP中curl的使用實例

        7.PHP對象注入的實例分析

        8.關于JAVA實現httpClient的實例

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>