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 对数据加密和解密之前,首先创建了一