• php AES加解密


    <?php
    
    class AES
    {
    
    
        /**
         * @param $key string 加密KEY
         * @param $iv string 加密向量
         * @param $data string 需要加密的数据
         * @return string
         */
        public static function encrypt($key, $iv, $data)
        {
            /**
             * 打开加密
             */
            $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, "", MCRYPT_MODE_CBC, "");
            /**
             * 初始化加密
             */
            mcrypt_generic_init($td, $key, $iv);
            /**
             * 加密
             */
            //$encrypted = mcrypt_generic($td, $data);
            $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
            $pad = $block - (strlen($data) % $block);
            $data .= str_repeat(chr($pad), $pad);
            $encrypted = mcrypt_generic($td, $data);
            /**
             * 清理加密
             */
            mcrypt_generic_deinit($td);
            /**
             * 关闭
             */
            mcrypt_module_close($td);
    
            return base64_encode($encrypted);
        }
    
        /**
         * @param $key   string  加密KEY
         * @param $iv    string  偏移量
         * @param $data  string  加密的数据
         * @return string
         */
        public static function decrypt($key, $iv, $data)
        {
            /**
             * 打开加密
             */
            $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,"",MCRYPT_MODE_CBC,"");
            /**
             * 初始化加密
             */
            mcrypt_generic_init($td, $key, $iv);
            $decode = base64_decode($data);
            /**
             * 解密
             */
    //        $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
    //        $pad = $block - (strlen($data) % $block);
    //        $data .= str_repeat(chr($pad), $pad);
            $dencrypted = mdecrypt_generic($td, $decode);
            /**
             * 清理加密
             */
            mcrypt_generic_deinit($td);
            /**
             * 关闭
             */
            mcrypt_module_close($td);
    
            return static::strippadding($dencrypted);
        }
    
        private static function strippadding($string) {
            $slast = ord(substr($string, -1));
            $slastc = chr($slast);
            $pcheck = substr($string, -$slast);
            if (preg_match("/$slastc{" . $slast . "}/", $string)) {
                $string = substr($string, 0, strlen($string) - $slast);
                return $string;
            } else {
                return false;
            }
        }
    }
    ?>
    
  • 相关阅读:
    vscode识别预览markdown文件
    工具:静态资源服务器server
    vscode配置easy sass 生成压缩和未压缩的css文件
    cocos Create简单记录
    小程序AR云识别
    小程序被冻结 解冻方法
    vscode设置px转换为rem
    js 打印文本
    .net 启动进程并执行某方法
    c# 创建文件夹、压缩成zip格式并下载
  • 原文地址:https://www.cnblogs.com/ljkltt/p/15503530.html
Copyright © 2020-2023  润新知