php的AES-128 EBC加密、解密

来源:互联网 发布:log4j linux 日志格式 编辑:程序博客网 时间:2024/06/11 10:49
<?php/*  +----------------------------------------------------------------------+  | IPTV                                                                 |  +----------------------------------------------------------------------+  | AES-128 ECB模式加密、解密工具  +----------------------------------------------------------------------+  | Author: yzq                                                          |  | Date: 2017/11/30 17:56                                                |  +----------------------------------------------------------------------+ */namespace Home\Model\Common;class AesTool{    /**     * AES-128 ECB模式加密数据     * @param $str  待加密的字符串     * @param $encryptKey 秘钥     * @return string AES加密后的字符串     */    public static function encrypt($str, $encryptKey)    {        $localKeyBase64 = base64_decode($encryptKey);        $str = trim($str);        $str = self::addPKCS7Padding($str);        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND);        $encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $localKeyBase64, $str, MCRYPT_MODE_ECB, $iv);        return base64_encode($encrypt_str);    }    /**     *  ES-128 ECB模式加密数据     * @param $str 待解密字符串     * @param $encryptKey 秘钥     * @return bool|string 返回解密后的字符串     */    public static function decrypt($str, $encryptKey)    {        $str = base64_decode($str);        $localKeyBase64 = base64_decode($encryptKey);        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND);        $encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $localKeyBase64, $str, MCRYPT_MODE_ECB, $iv);        $encrypt_str = trim($encrypt_str);        $encrypt_str = self::stripPKSC7Padding($encrypt_str);        return $encrypt_str;    }    private static function addPKCS7Padding($source)    {        $source = trim($source);        $block = mcrypt_get_block_size('rijndael-128', 'ecb');        $pad = $block - (strlen($source) % $block);        if ($pad <= $block) {            $char = chr($pad);            $source .= str_repeat($char, $pad);        }        return $source;    }    private static function stripPKSC7Padding($source)    {        $source = trim($source);        $char = substr($source, -1);        $num = ord($char);        if ($num == 62) return $source;        $source = substr($source, 0, -$num);        return $source;    }}

原创粉丝点击