http://blog.csdn.net/why_2012_gogo/article/details/51194673
PHP安全处理之Mcrypt使用总结:
我们知道在编写代码程序时,除了要保证代码的高性能,还有一个非常重要的,就是数据的安全。对于php而言,它本身提供了几种加密数据的办法,不过还是有限,对于满足特殊数据加解密方面有些欠缺,所以这里推荐使用的第三方拓展mcrypt库,它提供了类型、算法及模式繁多的加解密功能,那么下面来介绍下它的使用。
· 安装及配置
· 预定义常量
· 例子的验证
一、安装及配置
1、安装
因为Mcrypt是作为拓展被PHP所使用,所以可参考PHP拓展文章:
http://blog.csdn.net/why_2012_gogo/article/details/51120645
2、配置
对于mcrypt配置比较简单,我们只需要在php.ini中添加下面即可:
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/mcrypt.so
其实,也就是添加拓展加载而已。
二、预定义常量
Mcrypt支持的数据加密模式:
MCRYPT_MODE_ECB (electronic codebook) :适用于随机数据, 比如可以用这种模式来加密其他密钥。 由于要加密的数据很短,并且是随机的,所以这种模式的缺点反而起到了积极的作用。
MCRYPT_MODE_CBC (cipher block chaining) :特别适用于对文件进行加密。 相比 ECB, 它的安全性有明显提升。
MCRYPT_MODE_CFB (cipher feedback) 对于每个单独的字节都进行加密, 所以非常适用于针对字节流的加密。
MCRYPT_MODE_OFB (output feedback, in 8bit): 和 CFB 类似。它可以用在无法容忍加密错误传播的应用中。 因为它是按照 8 个比特位进行加密的, 所以安全系数较低,不建议使用。
libmcrypt-2.4.x 或更高版本:
MCRYPT_MODE_NOFB (output feedback, in nbit): 和 OFB 类似,但是更加安全, 因为它可以按照算法指定的分组大小来对数据进行加密。
MCRYPT_MODE_STREAM 是一种扩展模式,它包含了诸如 "WAKE" 或 "RC4" 的流加密算法。
三、例子的验证
下面举例子来说明其使用:
<?php
// 256比特的密钥
$key = hash('sha256', 'thisis a secret key', true);
// 打开算法和模式
$td = mcrypt_module_open('rijndael-256','','cbc','');
// 创建初始向量
$iv =mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_DEV_URANDOM);
echo '加密之前:This is a testting for mcryptuse!</br>';
// 初始化加密
mcrypt_generic_init($td,$key, $iv);
// 加密字符串
$encrypt_data =mcrypt_generic($td, 'This is a testting for mcrypt use!');
// 输出加密后的内容
echo '加密之后:'.$encrypt_data.'</br>';
// 结束加密,执行清理工作
mcrypt_generic_deinit($td);
// 初始化解密
mcrypt_generic_init($td,$key, $iv);
// 解密密文
$dencrypt_data =mdecrypt_generic($td, $encrypt_data);
// 输出解密后的内容
echo '解密之后:'.$dencrypt_data.'</br>';
// 结束解密,执行清理工作
mcrypt_generic_deinit($td);
// 关闭加密模块
mcrypt_module_close($td);
?>
结果:
好了,到这里我们已经介绍完了mcrypt的使用。