zoukankan      html  css  js  c++  java
  • php Aes 128位算法

    <?php
    class Mcrypt
    {
        private static $key = "fsdjfojojodjiovjojgfosdjfiojio";
        private static $iv = "y5v8s/N6PHurb/tqcwt4uw==";
        //private static $key = "!AS39(#al*%";
        //private static $iv = "sjA34kd9)_+";
    
        /**
         * cookie解密
         * @author zhaozhongyi
         * $encryptedData 二进制的密文;
         */
        public static  function Decrypt($encryptedData) {
            if(empty($encryptedData))
            {
                return $encryptedData;
            }
            $encryptedData = base64_decode($encryptedData);
            
            $keyv = base64_decode(self::$key);
            $ivv = base64_decode(self::$iv);
            $data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $keyv, $encryptedData, MCRYPT_MODE_CBC, $ivv);
            //echo "<br/>data = ";
            //print_r($data);
            $data = self::stripPKSC7Padding($data);
            //echo "<br/>data = ";
            //print_r($data);
            return $data;
        }
    
        /**
         * cookie加密
         * @author zhaozhongyi
         * $encryptedData 需加密字符;
         */
        public static function Ecrypt($encryptedData) {
            if(empty($encryptedData))
            {
                return $encryptedData;
            }
            //echo "<br/>encryptedData = ";
            //echo $encryptedData;
            $encryptedText = self::paddingPKCS7($encryptedData);
            //echo "<br/>encryptedText = ";
            //echo $encryptedText;
            $keyv = base64_decode(self::$key);
            $ivv = base64_decode(self::$iv);
            return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $keyv, $encryptedText, MCRYPT_MODE_CBC, $ivv));
        }
    
        /**
         * PKSC7解密算法
         */
        private static function stripPKSC7Padding($string){
            if(empty($string))
            {
                return $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;
            }
        }
    
        /**
         * PKSC7加密算法
         */
        private static function paddingPKCS7($data)
        {
            if(empty($data))
            {
                return $data;
            }
            $block_size = mcrypt_get_block_size('rijndael-128', 'cbc');
            $padding_char = $block_size - (strlen($data) % $block_size);
            $data .= str_repeat(chr($padding_char), $padding_char);
            return $data;
        }
    }
  • 相关阅读:
    计算机组成原理期末第十章【计算部分】
    计算机组成原理期末第六章【计算部分】
    快速傅里叶变换总结
    Graph 题解
    NOI 赛前复习旧题 & 复习知识点计划
    Party 题解
    洛谷 P7054 [NWRRC2015]Graph 题解
    CF1542D Priority Queue 题解
    Codeforces Round #701 (Div. 2) E. Move and Swap
    常微分方程
  • 原文地址:https://www.cnblogs.com/zhudongchang/p/4497086.html
Copyright © 2011-2022 走看看