<?php
class Aes
{
    
   /**
 * aes 加密 解密类库
 * @by singwa
 * Class Aes
 *说明:本类只适用于加密字符串
 * 
 */

   private $key = null;

    /**
     *
     * @param $key 		密钥
     * @return String
     */
    public function __construct($key) {
        // 需要小伙伴在配置文件app.php中定义aeskey
        $this->key = $key;
    }

    /**
     * 加密
     * @param String input 加密的字符串
     * @param String key   解密的key
     * @return HexString
     */
    public function encrypt($input = '') {
        $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
        $input = $this->pkcs5_pad($input, $size);
        $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        mcrypt_generic_init($td, $this->key, $iv);

        $data = mcrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $data = base64_encode($data);

        return $data;

    }
    /**
     * 填充方式 pkcs5
     * @param String text 		 原始字符串
     * @param String blocksize   加密长度
     * @return String
     */
    private function pkcs5_pad($text, $blocksize) {
        $pad = $blocksize - (strlen($text) % $blocksize);
        return $text . str_repeat(chr($pad), $pad);
    }
    /**
     * 解密
     * @param String input 解密的字符串
     * @param String key   解密的key
     * @return String
     */
    public function decrypt($sStr) {	
       $decrypted= mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$this->key,base64_decode($sStr), MCRYPT_MODE_ECB);
        $dec_s = strlen($decrypted);
        $padding = ord($decrypted[$dec_s-1]);
        $decrypted = substr($decrypted, 0, -$padding);
        return $decrypted;
    }

}

header('content-type:text/html;charset=utf-8');
$aes=new Aes("jfdkfdsfsdjfkldskjfsdjhhgjghjgjg");
/**
 *获取传送的数据并拼接成字符串
 */
$data=$_POST;
// 1 按字段排序
ksort($data);
// 2拼接字符串数据  
$string = http_build_query($data); 
$list=$aes->encrypt($string);//加密
var_dump($list);
echo "<br/>";
$data=$aes->decrypt($list);//解密
echo $data;
echo "<br/>";
/**把http_build_qyery生成的字符串转成数组
 *$data string 字符串
 *$arr  array 生成的数组
 */
parse_str($data,$arr);

  

?>