1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
<?php /** * Created by PhpStorm. * User: w3cnet * Date: 2016/12/10 * Time: 22:50 */ namespace app\models; class AESCrypt{ /** * 设置默认的加密key * @var str */ private static $key = "A9823E9B32A658F72814D0B612F550EC"; /** * 设置默认加密向量 * @var str */ private static $iv = 'A9823E9B@#A658F72814D0^&12F550E$'; /** * 设置加密算法 * @var str */ private static $cipher = MCRYPT_RIJNDAEL_256; /** * 设置加密模式 * @var str */ private static $mode = MCRYPT_MODE_CBC; /** * 对内容加密,注意此加密方法中先对内容使用padding pkcs7,然后再加密。 * @param str $content 需要加密的内容 * @return str 加密后的密文 */ public static function encrypt($content){ if(empty($content)){ return null; } $src_data = $content; $block_size = mcrypt_get_block_size(self::$cipher, self::$mode); $padding_char = $block_size - (strlen($content) % $block_size); $src_data .= str_repeat(chr($padding_char),$padding_char); return base64_encode(mcrypt_encrypt(self::$cipher, self::$key, $src_data, self::$mode, self::$iv)); } /** * 对内容解密,注意此加密方法中先对内容解密。再对解密的内容使用padding pkcs7去除特殊字符。 * @param String $content 需要解密的内容 * @return String 解密后的内容 */ public static function decrypt($content){ if(empty($content)){ return null; } $content = base64_decode($content); $content = mcrypt_decrypt(self::$cipher, self::$key, $content, self::$mode, self::$iv); $pad = ord($content[($len = strlen($content)) - 1]); return substr($content, 0, strlen($content) - $pad); } } |