background image

mcrypt 启用 加密以及解密过程详细解析

Mcrypt 库支持 20 多种加密算法和 8 种加密模式,具体可以通过函数
mcrypt_list_algorithms()和 mcrypt_list_modes()来显示
Mcrypt 扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。
1.PHP 加密扩展库 Mcrypt 安装
在标准的

PHP 安装过程中并没有把 Mrcypt 安装上,但 PHP 的主目录下包含了 libmcrypt.dll

libmhash.dll 文件 (libmhash.dll 是 Mhash 扩展库,这里可以一起装上)。首先,将这两个文

件复制到系统目录

windows\system32 下,然后在 PHP.ini 文件中按 Ctrl+F 快捷键跳出查找

框,并找到;

extension=php-mcrypt.dll 和; extension=php_mhash.dll 这两个语句,接着将前

面的

“;”去掉;最后,保存并重启 Apache 服务器即可生效。

2.PHP 加密扩展库 Mcrypt 的算法和加密模式
Mcrypt 库支持 20 多种加密算法和 8 种加密模式,具体可以通过函数
mcrypt_list_algorithms()和 mcrypt_list_modes()来显示,结果如下:
Mcrypt 支持的算法有:cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 
saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes
Mcrypt 支持的加密模式有:cbc cfb ctr ecb ncfb nofb ofb stream
这些算法和模式在应用中要以常量来表示,写的时候加上前缀

MCRYPT_和 MCRYPT_来表

示,如下面

Mcrypt 应用的例子:

DES 算法表示为 MCRYPT_DES;
ECB 模式表示为 MCRYPT_MODE_ECB;
3.PHP 加密扩展库 Mcrypt 应用
先看一个例子,了解

Mcrypt 的工作流程,再来看看部分流程使用的函数:

代码如下

:

 

    

$str

 = "我是李云";

    

$key

 = "123qwe.019860905061X";

    

$cipher

 = MCRYPT_RIJNDAEL_128;

    

$mode

 = MCRYPT_MODE_ECB;

    

$iv

 = mcrypt_create_iv(mcrypt_get_iv_size(

$cipher

,

$mode

),MCRYPT_RAND);

    echo

 "原文:".

$str

."<br>";

    

$str_encrypt

 = mcrypt_encrypt(

$cipher

,

$key

,

$str

,

$mode

,

$iv

);

    echo

 "加密后的内容是:".

$str_encrypt

."<br>";

    

$str_decrypt

 = mcrypt_decrypt(

$cipher

,

$key

,

$str_encrypt

,

$mode

,

$iv

);

    echo

 "解密后的内容:".

$str_decrypt

."<br>";

 
运行结果:
原文:我是李云
加密后的内容是:

B@鴹

�=(I 辩蝣 Z%

解密后的内容:我是李云
<1>由例子中可看到,使用 PHP 加密扩展库 Mcrypt 对数据加密和解密之前,首先创建了一