本文实例讲述了php扩展mcrypt实现的aes加密功能。分享给大家供大家参考,具体如下:
aes(advanced encryption standard,高级加密标准)是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的des,已经被多方分析且广为全世界所使用。rijndael是在aes中使用的基本密码算法。
对于此算法网上流传有很多php代码实现的版本,其实php的扩展mcrypt完全支持此加密通讯新闻算法,不必要自己去写代码实现。先不说自己写费时费力(当然你若是想研究此加密算法,那另说),使用php代码实现的算法效率也不会太高。
mcrypt扩展在php中默认是没有的,需要自己安装配置,其方法可以在网上搜索,这里不在详述。你可以使用以下代码检查你的php环境是否支持mcrypt
$cipher_list = mcrypt_list_algorithms();//mcrypt支持的加密算法列表$mode_list = mcrypt_list_modes(); //mcrypt支持的加密模式列表echo '<xmp>';print_r($cipher_list);print_r($mode_list);
若你的环境支持mcrypt,输出结果应该如下:
array
(
[0] => cast-128
[1] => gost
[2] => rijndael-128
[3] => twofish
[4] => arcfour
[5] => cast-256
[6] => loki97
[7] => rijndael-192
[8] => saferplus
[9] => wake
[10] => blowfish-compat
[11] => des
[12] => rijndael-256
[13] => rpent
[14] => xtea
[15] => blowfish
[16] => enigm水的诗词a
[17] => rc2
[18] => tripledes
)
array
(
[0] => cbc
[1] => cfb
[2] => ctr
[3] => ecb
[4] => ncfb
[5] => nofb
[6] => ofb
[7] => stream
)
例如本机采用wamprver环境,直接开启了mcrypt扩展:
其中rijndael-128,rijndael-192,rijndael-256就是aes加密,3种分别是使用不同的数据块和密钥长度进行加密。
以下是使用扩展mcrypt实现aes加密的简单示例
/** * 利用mcrypt做aes加密解密 * @author ts24<tsxw24@gmail.com> */abstract class aes{ /** * 算法,另外还有192和256两种长度 */ const cipher = mcrypt_rijndael_128; /** * 模式 */ const mode = mcrypt_mode_ecb; /** * 加密 * @param string $key 密钥 * @param string $str 需加密的字符串 * @return type */ static public function encode( $key, $str ){ $iv = mcrypt_create_iv(mcrypt_get_iv_size(lf::cipher,lf::mode),mcrypt_rand); return mcrypt_encrypt(lf::cipher, $key, $str, lf::mode, $iv); } /** * 解密 * @param type $key * @param type $str * @return type */ static public function decode( $key, $str ){ $iv = mcrypt_create_iv(mcrypt_get_iv_size(lf::cipher,lf::mode),mcrypt_rand); return mcrypt_decrypt(lf::cipher, $key, $str, lf::mode, $iv); }}
使用示例:
$str = '我是明文我是明文我是明文我是明文我是明文dsfdghgasdfasdddddddd';$key = 'asgjlgyewerwrrew4567i8o';$str1=aes::encod万念俱灰e($key, $str);$str2=aes::decode($key, $str1);echo '<xmp>';var_dump($str);var_dump($str1);var_dump($str2);var_dump(rtrim($str2));
输出结果
问题,不知道是什么原因,解密后的字符串(见上图),末尾还留下有不可见的填充字符,当明文刚好可以分组时则没有。
做家务英文ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:
文字在线加密解密工具(包含aes、des、rc4等):
md5在线加密工具:
http://tools.jb51.net/password/createmd5password
在线散列/哈希算法加密工具:
在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:
在线sha1/sha224/sha256/sha384/sha512加密工具:
更多关于php相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《php编码与转码操作技巧汇总》、《pqq总是掉线怎么回事hp数学运算技巧总结》、《php数组(array)操作技巧大全》、《php字符串(string)用法总结》、《php数据结构与算法教程》、《php程序设计算法总结》及《php正则表达式用法总结》
希望本文所述对大家php程序设计有所帮助。
本文发布于:2023-04-06 16:08:37,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/ec36bae4398a3d584b70e96cd2737de0.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP扩展mcrypt实现的AES加密功能示例.doc
本文 PDF 下载地址:PHP扩展mcrypt实现的AES加密功能示例.pdf
留言与评论(共有 0 条评论) |