[置顶] PHP安全处理之Mcrypt使用总结

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的使用。

 

 

 

技术讨论群:489451956(新)

 

你可能感兴趣的:(PHP,安全,mcrypt)