栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP-libmcrypt-2.4.x加密-AES加密

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP-libmcrypt-2.4.x加密-AES加密

mcrypt_get_block_size — 获得加密算法的分组大小

此函数将在PHP7.1.0以后将被弃用。


1int mcrypt_get_block_size ( int $cipher )
1int mcrypt_get_block_size ( string $cipher , string $mode )

第一个原型针对 libmcrypt 2.2.x, 第二个原型针对 libmcrypt 2.4.x 或 2.5.x。


PHP的AES加、解密类:


class Security {    public static function encrypt($input$key) {    // define ('MCRYPT_RIJNDAEL_128', "rijndael-128");// 16字节,128位    // define ('MCRYPT_MODE_ECB', "ecb");// 常用加密模式    $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);    // 填充空位;pkcs5_pad&pkcs7_pad二者区别不大    $input = Security::pkcs5_pad($input$size);    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');    $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);    mcrypt_generic_init($td$key$iv);    $data = mcrypt_generic($td$input);    mcrypt_generic_deinit($td);    mcrypt_module_close($td);    $data base64_encode($data);    return $data;    }                      private static function pkcs5_pad ($text$blocksize) {        $pad $blocksize - (strlen($text) % $blocksize);        // 使用$pad的ascii码值来填充空位        return $text str_repeat(chr($pad), $pad);    }      public static function decrypt($sStr$sKey) {        $decrypted= mcrypt_decrypt(        MCRYPT_RIJNDAEL_128,        $sKey,        base64_decode($sStr),        MCRYPT_MODE_ECB    );        $dec_s strlen($decrypted);        $padding = ord($decrypted[$dec_s-1]);        $decrypted substr($decrypted, 0, -$padding);        return $decrypted;    }   }      // $key = "1234567891234567";// $data = '{"user":"1234556789","pwd":"4343434343","tel":"18988888888","realname":"zhangsan"}';  // $value = Security::encrypt($data , $key );// echo "加密::".$value.'
';// echo Security::decrypt($value, $key );


代码中使用:


       function zm_ecrypt()    {        // 加密、解密        $string '{"user":"1234556789","pwd":"4343434343","tel":"18988888888","realname":"zhangsan"}';                 vendor('encrypt.Security'or die("方案7引入失败");        $sec new Security();        // 这里对第二个参数key进行了base64_encode加密        $sec_res1 $sec->encrypt($string"em1hcnRlAzIwMTc5ODc2NTQzMjEwMTIz");        // 结果转16进制        $sec_res = toHexString(base64_decode($sec_res1));                 // 解密        // 先把十六进制转成字符串,然后进行base64_encode        $demo base64_encode(hexToStr($sec_res));        $sec_dec $sec->decrypt($demo"em1hcnRlAzIwMTc5ODc2NTQzMjEwMTIz");//         var_dump("rn方案7加密的结果rn" . $sec_res);//         var_dump("rn方案7解密的结果rn" . $sec_dec);  //         return $as_res_encrypt;    }

使用的时候,请注意base64_encode和base64_decode,对key和string是否进行编码。


用到的十六进制与字符串之间的转换:


       function hexToStr($hex)    {        $string="";        for($i=0;$i<strlen($hex)-1;$i+=2)            $string.=chr(hexdec($hex[$i].$hex[$i+1]));        return  $string;    }             function toHexString ($string){        $buf "";        for ($i = 0; $i strlen($string); $i++){            $val dechex(ord($string{$i}));            if(strlen($val)< 2)                $val "0".$val;            $buf .= $val;        }        return $buf;    }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/228952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号