zoukankan      html  css  js  c++  java
  • php 接口中常用的aes加密

    <?php
    /**
     * Aes  对称加密
     */
    class Aes {
    
        public $key;
    
        public function __construct($key){
            $this->key = $key;
            $this->iv  = $key;
        }
    
        /**
         * 加密   ECB - 128 - addPkcs7Padding
         */
        public function encrypts($data)
        {
            $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->key, $this->addPkcs7Padding($data), MCRYPT_MODE_ECB,$this->iv);
            return base64_encode($encrypted);
        }
    
        /**
         * 解密
         */
        public function decrypts($data)
        {
            $data =base64_decode($data);
            return $this->stripPkcs7Padding(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key, $data, MCRYPT_MODE_ECB, $this->iv));
    
        }
    
    
        public function addPkcs7Padding($string, $blocksize = 16) 
        {
            $len = strlen($string); //取得字符串长度
            $pad = $blocksize - ($len % $blocksize); //取得补码的长度
            $string .= str_repeat(chr($pad), $pad); //用ASCII码为补码长度的字符, 补足最后一段
            return $string;
        }
    
    
        public function stripPkcs7Padding($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;
            }
        }
    }

    $sir   = 'zimakaimen';

    $key  = md5($_POST['key'].$sir); 

    $aes  = new Aes($key);

    $data = $aes->decrypts($params);

  • 相关阅读:
    基于发布/订阅模型的应用程序的主循环设计
    C++使用继承时子对象的内存布局
    安装 CentOS 后的系统配置及软件安装备忘
    环形无锁队列
    并发编程基础
    线程池实现
    Git远程操作
    Unix权限管理
    jquery中,某些写法后来更新导致版本不支持的替代方法
    js相关
  • 原文地址:https://www.cnblogs.com/6min/p/11041392.html
Copyright © 2011-2022 走看看