PHP 標準AES加密算法類

ngww 9年前發布 | 1K 次閱讀 PHP

分享一個標準PHP的AES加密算法類,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情況下比較容易搞錯,可以通過mcrypt_list_algorithms函數查看你需要的加密算法標識。

 
<?php
/**

  • AES128加解密類
  • @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模式加密數據 $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模式加密數據 $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; } } </pre>
 本文由用戶 ngww 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!