標(biāo)準(zhǔn)PHP的AES加密算法類(lèi)_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:PHP實(shí)現(xiàn)通用alert函數(shù)的方法
      這篇文章主要介紹了PHP實(shí)現(xiàn)通用alert函數(shù)的方法,實(shí)例分析了php自定義alert函數(shù)實(shí)現(xiàn)提示信息的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下 本文實(shí)例講述了PHP實(shí)現(xiàn)通用alert函數(shù)的方法。分享給大家供大家參考。具體如下: 函數(shù):通用提示 參數(shù):提示訊息,類(lèi)型或網(wǎng)址,窗口

       AES是分組密鑰,算法輸入128位數(shù)據(jù),密鑰長(zhǎng)度也是128位。用Nr表示對(duì)一個(gè)數(shù)據(jù)分組加密的輪數(shù)(加密輪數(shù)與密鑰長(zhǎng)度的關(guān)系如表1所列)。每一輪都需要一個(gè)與輸入分組具有相同長(zhǎng)度的擴(kuò)展密鑰Expandedkey(i)的參與。

         

      分享一個(gè)標(biāo)準(zhǔn)PHP的AES加密算法類(lèi),其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情況下比較容易搞錯(cuò),可以通過(guò)mcrypt_list_algorithms函數(shù)查看你需要的加密算法標(biāo)識(shí)。

       

      代碼如下:
      <?php
      /**
      * AES128加解密類(lèi)
      * @author dy
      *
      */
      defined('InEjbuy') or exit('Access Invalid!');
      class Aes{
      //密鑰
      private $_secrect_key;
      public function __construct(){
      $this->_secrect_key = 'MYgGnQE2jDFADSFFDSEWsdD';
      }
      /**
      * 加密方法
      * @param string $str
      * @return string
      */
      public function encrypt($str){
      //AES, 128 ECB模式加密數(shù)據(jù)
      $screct_key = $this->_secrect_key;
      $screct_key = base64_decode($screct_key);
      $str = trim($str);
      $str = $this->addPKCS7Padding($str);
      $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);
      $encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);
      return base64_encode($encrypt_str);
      }
      /**
      * 解密方法
      * @param string $str
      * @return string
      */
      public function decrypt($str){
      //AES, 128 ECB模式加密數(shù)據(jù)
      $screct_key = $this->_secrect_key;
      $str = base64_decode($str);
      $screct_key = base64_decode($screct_key);
      $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);
      $encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);
      $encrypt_str = trim($encrypt_str);
      $encrypt_str = $this->stripPKSC7Padding($encrypt_str);
      return $encrypt_str;
      }
      /**
      * 填充算法
      * @param string $source
      * @return string
      */
      function addPKCS7Padding($source){
      $source = trim($source);
      $block = mcrypt_get_block_size('rijndael-128', 'ecb');
      $pad = $block - (strlen($source) % $block);
      if ($pad <= $block) {
      $char = chr($pad);
      $source .= str_repeat($char, $pad);
      }
      return $source;
      }
      /**
      * 移去填充算法
      * @param string $source
      * @return string
      */
      function stripPKSC7Padding($source){
      $source = trim($source);
      $char = substr($source, -1);
      $num = ord($char);
      if($num==62)return $source;
      $source = substr($source,0,-$num);
      return $source;
      }
      }

       

      以上就是本文所述的全部?jī)?nèi)容了,希望對(duì)大家學(xué)習(xí)php的AES加密算法類(lèi)有所幫助。

      分享:PHP獲取ip對(duì)應(yīng)地區(qū)和使用網(wǎng)絡(luò)類(lèi)型的方法
      這篇文章主要介紹了PHP獲取ip對(duì)應(yīng)地區(qū)和使用網(wǎng)絡(luò)類(lèi)型的方法,實(shí)例分析了php通過(guò)調(diào)用ip138數(shù)據(jù)庫(kù)獲取IP及網(wǎng)絡(luò)類(lèi)型的技巧,需要的朋友可以參考下 本文實(shí)例講述了PHP獲取ip對(duì)應(yīng)地區(qū)和使用網(wǎng)絡(luò)類(lèi)型的方法。分享給大家供大家參考。具體分析如下: 這里測(cè)試的時(shí)候因?yàn)閕p168網(wǎng)站

      來(lái)源:模板無(wú)憂(yōu)//所屬分類(lèi):PHP教程/更新時(shí)間:2015-03-13
      相關(guān)PHP教程