zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
    ?>
    
  • 相关阅读:
    记录锁
    linux多线程同步pthread_cond_XXX条件变量的理解
    设置创建文件掩码遇到的问题
    函数的可重入和线程安全
    sigemptyset,sigfillset,sigaddset,sigdelset,sigismember,sigprocmask,sigpendmask作用
    嵌入式中断服务函数的一些特点
    linux alarm函数解除read write等函数的阻塞
    孤儿进程,僵死进程
    标准IO的缓冲问题
    《实用技巧》——让你的网站变成响应式的3个简单步骤
  • 原文地址:https://www.cnblogs.com/ljkltt/p/15503530.html
Copyright © 2011-2022 走看看