php扩展库-PHP加密扩展库—Mcrypt扩展库实例使用

PHP加密扩展库-Mcrypt扩展库

在开始本文正文之前,我们先来了解一下什么是PHP加密扩展库:PHP中不仅有几种加密函数(md5、crypt、sha1),而且PHP库中还有一些功能比较全面的加密扩展! 就好像php本来不支持某个功能,但是如果新版本想要支持的话,就会以扩展的形式提供。 这样,我们在配置php的时候,如果不使用这个功能,就可以让php不加载,从而节省服务器资源,提高其性能。

PHP加密函数在前面三篇文章《PHP加密函数-crypt()函数加密》、《PHP加密函数-md5()函数加密》和《PHP加密函数-sha1()函数加密》中介绍过,那么按照下一篇php扩展库,我们将为您介绍PHP加密扩展库!

PHP加密扩展库有两种类型,Mcrypt和Mhash。 在这篇文章中,我们将首先介绍Mcrypt!

1.Mcrypt库安装

mcypt是一个非常强大的加密算法扩展库。 在标准的PHP安装过程中,Mcrypt是没有安装的,但是PHP的主目录中包含了libmcrypt.dll文件,所以我们只需要在PHP配置文件中的extension=php_mcrypt.dll这行后面添加分号“;”去掉,然后重新启动服务器就可以使用这个扩展库了。

2.Mcrypt库常量

mcrypt库支持20多种加密算法和8种加密模式,我们可以直接使用函数mcrypt_list_algorithms()和mcrypt_list_modes()来查看,具体代码如下:

<?php
$atr = mcrypt_list_algorithms();  //函数返回 Mcrypt支持的加密算法数组
echo "支持算法有:";
foreach ($atr as $atr_value){
    echo "
".$atr_value; } $arr = mcrypt_list_modes(); //函数返回 Mcrypt支持的加密模式数组 echo "

支持加密模式有:"; foreach ($arr as $arr_value){ echo "
".$arr_value; } ?>

登录复制

输出是:

注:这些算法和模式在实际应用中需要用常量来表示。 书写时添加前缀:MCRYPT_和MCRYPT_MODE_来表示,示例:

TWOFISH算法表示为:MCRYPT_TWOFISH。

CBC加密模式表示为:MCRYPT_MODE_CBC。

3.Mcrypt应用程序

使用Mcrypt进行加密解密,无需使用md5()、sha1()等函数,直接调用即可。 为了让大家清楚地了解Mcrypt的工作流程,我们直接用代码来介绍一下。 具体代码如下:

<?php
header("Content-Type:text/html; charset=utf-8");
$str = "被加密的内容:PHH中文网www.php.cn";  //加密文本
$key = "key:111";                               //密钥
$cipher = MCRYPT_DES;                           //密码类型
$modes = MCRYPT_MODE_ECB;                      //密码模式
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND); //初始化向量
echo "加密前:".$str."

"; $str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); //加密函数 echo "加密后:".$str_encrypt."

"; $str_decrypt =mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); //解密函数 echo "还原:".$str_decrypt."

"; ?>

登录复制

输出是:

下面我们介绍一下例子中出现的几个函数:

1. mcrypt_create_iv:

语法格式如下:

string mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] )

登录复制

使用 Mcrypt 进行数据加密。 解密之前,首先创建一个初始化向量(简称iv)。 创建初始化向量需要两个参数:size指定iv的大小,source是iv的来源。 源可以采用以下值:

2. mcrypt_get_iv_size:

语法格式:

int mcrypt_get_iv_size ( string $cipher , string $mode )

登录复制

该函数返回的初始化向量 (iv) 的大小。 函数中的两个参数就是上面刚刚介绍的加密算法(cipher)和加密模式(mode)。

3. mcrypt_加密:

语法格式如下:

string mcrypt_encrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

登录复制

初始化向量后,可以使用mcrypt_encrypt()加密函数对数据进行加密。 该函数的五个参数的含义如下:

(1)cipher:加密算法。 在上面的例子中,它是变量$cipher。 这里的加密算法可以与初始化向量中的加密算法不同。

(2)钥匙:钥匙。 上例中的变量 $key。

(3)mode:加密模式。

(4)iv:初始化向量。

4. mcrypt_解密

语法格式如下:

string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

登录复制

解密函数mcrypt_decrypt()和加密函数mcrypt_encrypt()的参数几乎相同。 唯一的区别是参数数据php扩展库,这里的数据是要揭示的数据,而不是原始数据。

注意:加密函数和解密函数中的cipher、key、mode参数必须一致,否则数据将无法恢复。

下一篇我们将继续介绍PHP加密扩展库:Mhash扩展库。 详细内容请阅读《PHP加密扩展库-Mhash扩展库》!