怎么在PHP中实现一个AES加密,解密封装类

  介绍

本文章向大家介绍怎么在PHP中实现一个AES加密,解密封装类的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

PHP有什么用

PHP是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及PHP自创新的语法,主要用来做网站开发,许多小型网站都用PHP开发,因为PHP是开源的,从而使PHP经得久不衰。

具体如下:

& lt; PHP ?/* *   ,* Class  AES   ,*用于AES加解密数据   ,*/class  AES   {   protected 才能;cipher 美元;=,MCRYPT_RIJNDAEL_256;,//AES加密算法   protected 才能;mode 美元;=,MCRYPT_MODE_CBC;,//采用cbc加密模式   protected 才能;关键;美元,//密钥   protected 才能;四美元,//cbc模式加密向量,如为空将采用密钥代替   ,/* *   ,,*,AES 构造函数。   ,,*   ,,*,@param ,, key 美元;密钥   ,,*,@param  null  iv 美元;向量,可选,如为空将采用密钥代替   ,,*   ,,*,@throws 例外   ,,*/public 才能;function  __construct(键,美元,美元iv =, NULL)   {才能   ,,,if  (! extension_loaded (“mcrypt")), {//,,,,,,throw  new  \异常(“mcrypt  extension  do  not 存在只it  was  DEPRECATED 拷贝PHP  7.1.0,,以及REMOVED 拷贝PHP  7.2.0只use  OpenSSL  instead");   ,,,}   ,,,这个→美元key =,美元的关键;   ,,,这个→美元iv =,四美元;   ,,}   ,/* *   ,,*,加密数据   ,,* @param 元数据   ,,*   ,,*,@return 字符串   ,,*/public 才能;function 加密(元数据)   {才能   ,,,td 美元;=,mcrypt_module_open ($ this→密码,& # 39;& # 39;,,这→美元模式,,& # 39;& # 39;);   ,,,key 美元;=,散列(“sha256",,这→美元关键,,真的);   iv 美元,,,,=,收取($ this→iv), ?,散列(“sha256",, $ this→四世,真的),:,美元的关键;   ,,,data 美元;=,$ this→填充(元数据);   ,,,mcrypt_generic_init (td美元,美元的钥匙,,4美元);   ,,,encryptedData 美元;=,base64_encode (mcrypt_generic (td美元,,数据));   ,,,mcrypt_generic_deinit (td);   ,,,mcrypt_module_close (td);   ,,,return  encryptedData美元;   ,,}   ,/* *   ,,*,解密数据   ,,* @param 元数据   ,,*   ,,*,@return  bool |字符串   ,,*/public 才能;function 解密(元数据)   {才能   ,,,td 美元;=,mcrypt_module_open ($ this→密码,& # 39;& # 39;,,这→美元模式,,& # 39;& # 39;);   ,,,key 美元;=,散列(“sha256",,这→美元关键,,真的);   iv 美元,,,,=,收取($ this→iv), ?,散列(“sha256",, $ this→四世,真的),:,美元的关键;   ,,,mcrypt_generic_init (td美元,美元的钥匙,,4美元);   ,,,decrypted_data 美元;=,mdecrypt_generic (td美元,base64_decode(数据)美元);   ,,,mcrypt_generic_deinit (td);   ,,,mcrypt_module_close (td);   ,,,return  $ this→unPadding ($ decrypted_data);   ,,}   ,/* *   ,,*,填充数据到分组大小的整数倍   ,,*,@param  null 元数据   ,,*   ,,*,@return 字符串   ,,*/protected 才能;function 填充($ data =, null)   {才能   ,,,blockSize 美元;=,32岁,,//MCRYPT_RIJNDAEL_256算法的分组大小是32字节   ,,,pad 美元;=,blockSize 美元;作用;(strlen(元数据),%,blockSize美元);   ,,,return  data 美元;只函数(科(pad)美元,美元pad);   ,,}   ,/* *   ,,*,去掉填充的数据   ,,*,@param  null 元数据   ,,*   ,,*,@return  bool |字符串   ,,*/protected 才能;function  unPadding ($ data =, null)   {才能   ,,,pad 美元;=,奥德($ data [strlen(元数据),安康;1]);   ,,,if  (pad 美元;祝辞,strlen(元数据)),{   ,,,,,return 假;   ,,,}   ,,,if  (strspn(数据,美元,对应(pad)美元,strlen(元数据),安康;美元pad), !=,垫美元),{   ,,,,,return 假;   ,,,}   ,,,return  substr ($ data, 0, 1, *,美元pad);   ,,}   ,/* *   ,,*,@return 混合   ,,*/null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在PHP中实现一个AES加密,解密封装类