| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- namespace app\controller;
- class Aes{
- //key长度应该为16
- public static $key = "rb!nBwXv4C%Gr^84";
- //iv长度应该为16
- public static $iv = "GTC9fC6JABup4EBA";
- //配合Java端,使用128位,256位java端默认是不支持的
- public static $Method = 'AES-128-CBC';
- // AES加密
- public static function encrypt($cleartext,$key = '',$iv = ''){
- $key = empty($key) ? self::$key : $key;
- $iv = empty($iv) ? self::$iv : $iv;
- $encrypted = openssl_encrypt($cleartext, self::$Method, $key, OPENSSL_RAW_DATA,$iv);
- return base64_encode($encrypted);
- }
- //AES解密
- public static function decrypt($encrypted,$key = ''){
- $key = empty($key) ? self::$key : $key;
- $iv = empty($iv) ? self::$iv : $iv;
- $encrypted = base64_decode($encrypted);
- $decrypted = openssl_decrypt($encrypted, self::$Method, $key, OPENSSL_RAW_DATA,$iv);
- return trim($decrypted);
- }
- //PHP 7.0 以上用AES加密
- public static function encrypt7($json_str,$rands){
- $screct_key = $rands;
- $str = trim($json_str);
- $str = self::addPKCS7Padding($str);
- $encrypt_str= openssl_encrypt($str, 'AES-128-ECB', $screct_key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING);
- $date = base64_encode($encrypt_str);
- return $date;
- }
- //PHP 7.0以上 AES填充方法
- public static function addPKCS7Padding($string, $blocksize = 16) {
- $len = strlen($string);
- $pad = $blocksize - ($len % $blocksize);
- $string .= str_repeat(chr($pad), $pad);
- return $string;
- }
- //PHP 7.0 AES解密以上用此方法
- public static function decrypt7($responsedatadata,$decrypted){
- $screct_key = $decrypted;
- $encrypt_str= openssl_decrypt($responsedatadata,"AES-128-ECB",$screct_key);
- $encrypt_str = preg_replace('/[\x00-\x1F]/','', $encrypt_str);
- return json_decode($encrypt_str,true);
- }
- }
|