🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
最近兼职的一个项目里使用了加解密函数 mcrypt\_encrypt mcrypt\_decrypt 其依赖于mcrypt扩展库,在Php5.6版本以上是默认编译加载的,低版本要在php.ini中显示加载 在低版本的PHP中需要在配置文件php.ini中显式添加对扩展的引用,同时要保证扩展引用目录中有相应的扩展文件;在高版本的PHP中,Windows下似乎默认开启了mcrypt的扩展,既不需要在配置文件php.ini中做配置,在扩展引用目录中也没有看到相应的扩展文件,在linux下则需要安装对应的mcrypt.so扩展。 mcrypt扩展支持多种加密算法和模式,可以使用mcrypt\_list\_algorithms()和mcrypt\_list\_modes()来显示支持的加密算法和加密模式。 二、mcrypt扩展的使用 加密 1、打开加密算法和模式    mcrypt\_module\_open('tripledes', '', ecb'', ''); 第一个参数是使用的加密算法的名称,对应mcrypt\_list\_algorithms()输出的加密算法;第三个参数对应加密的模式,对应mcrypt\_list\_modes()输出的支持加密模式。 2、创建初始化向量    mcrypt\_create\_iv (mcrypt\_enc\_get\_iv\_size($td), MCRYPT\_RAND); PS.在Window平台下,第二个参数固定使用MCRYPT\_RAND 3、初始化加密缓冲区    mcrypt\_generic\_init($td, $key, $iv);    $td为返回的加密描述符,$key为加密密钥,$iv为初始化向量 4、数据加密    $encrypted\_data = mcrypt\_generic($td, $data); $td为加密描述符,$data为加密前的数据,数据加密函数返回加密后的字符串。 5、结束加密,执行清理工作 mcrypt\_generic\_deinit($td); 解密 1、打开解密算法和模式,同上,得到$td解密描述符 2、创建初始化向量,同上,得到$iv初始化向量 3、初始化解密缓冲区 mcrypt\_generic\_init($td,$key, $iv); 4、数据解密    $decrypted\_data = mdecrypt\_generic($td, $encrypted\_data); PS.$encrypted\_data为解密前的密文,$decrypted\_data为解密后的明文。