手机版

用PHP扩展实现AES加密功能的例子

时间:2021-08-27 来源:互联网 编辑:宝哥软件园 浏览:

本文介绍了用PHP扩展mcrypt实现的AES加密功能。分享给大家参考,如下:

AES(高级加密标准)是美国联邦政府采用的块加密标准。该标准用于替代原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]=two fish[4]=arcfour[5]=cast-256[6]=Loki 97[7]=Rijndael-192[8]=safer plus[9]=wake[10]=blowfish-compat[11]=des[12]=Rijndael-256[13]=serpent[14]=xtea[11]

比如本机采用wampserver环境,直接打开mcrypt扩展:

其中,rijndael-128、rijndael-192和rijndael-256是AES加密,三种类型采用不同的数据块和密钥长度进行加密。

下面是一个使用扩展mcrypt的AES加密的简单示例

/* * *使用mcrypt进行AES加密解密* @ author ts24[email protected]*/抽象类AES {/* * *算法,有192和256两种长度*/const cipher=MC rypt _ Rijndael _ 128;/* * * MODE */const MODE=MCRYPT _ MODE _ ECB;/* * *加密* @ param string $ key * @ param string $ str要加密的字符串* @返回类型*/静态公共函数encode ($ key,$ str){ $ iv=MCRYPT _ create _ iv(MCRYPT _ get _ iv _ size(self : cipher,self:MODE),MCRYPT _ RAND);返回mcrypt _ encrypt(self :3360 cipher,$key,$str,self:MODE,$ iv);}/* * * decrypt * @ param type $ key * @ param type $ str * @ return type */static public function decode($ key,$ str){ $ iv=MCRYPT _ create _ iv(MCRYPT _ get _ iv _ size(self :3360 cipher,self:MODE),MCRYPT _ RAND);返回mcrypt _ decrypt(self :3360 cipher,$key,$str,self:MODE,$ iv);}}使用示例:

$str='我是明文我是明文我是明文我是明文dsfdghgasdfasdddddddd ';$ key=' aSGJLGYEWERWRREW4567i8o$ ST R1=AES :3360 ENCODE($ key,$ str);$ str 2=AE :3360 de code($ key,$ str 1);回显“xmp”;var _ dump($ str);var _ dump($ ST R1);var _ dump($ str 2);var _ dump(rtrim($ str 2));输出结果

问题,不知道是什么原因。解密后的字符串(见上图)在末尾仍然有不可见的填充字符,但是当明文可以分组时就没有了。

PS:对加解密感兴趣的朋友也可以参考本网站的在线工具:

文本在线加解密工具(包括AES、DES、RC4等。)http://tools.jb51.net/password/txt_encode

MD5在线加密工具:http://tools.jb51.net/password/CreateMD5Password

在线哈希/哈希算法加密工具:http://tools.jb51.net/password/hash_encrypt

在线MD5/哈希/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha 224/sha 256/sha 384/sha 512加密工具:http://tools.jb51.net/password/sha_encode

更多对PHP相关内容感兴趣的读者可以查看本网站的话题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、0103010。

希望本文对PHP编程有所帮助。

版权声明:用PHP扩展实现AES加密功能的例子是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。