计应134(实验班) 王锐
在PHP中能对数据进行加密的函数主要有crypt()、md5()、shal(),还有加密扩展库Mcrypt和Mash。
1、使用crypt()加密
crypt()函数可以完成单向加密功能,语法如下:
string crypt(sring str[,string salt]);
其中,参数str是需要加密的字符串;参数salt为加密时使用的干扰串。
例1:
首先声明一个字符串$str,赋值为“This is an example!”,然后使用crypt()函数进行加密并输出。实例代码如下:
<?php
$str ='This is an example!'; //声明字符串变量$str
echo '加密前$str的值为:'.$str;
$crypttostr = crypt($str); //对变量$str加密
echo '<p>加密后$str的值为:'.$crypttostr; //输出加密后的变量
?>
运行结果如图1.1所示。
图1.1使用crypt()函数进行加密
例2
对输入的用户名进行检测,如果该用户存在,显示“用户名已存在。”;否则显示“恭喜您:用户名可以使用!”。实例代码如下:
<?php
/* 数据库连接 */
$conn = mysql_connect("localhost","root","root") or die("数据库链接错误".mysql_error());
mysql_select_db("db_database15",$conn) or die("数据库访问错误".mysql_error());
mysql_query("set names gb2312");
?>
<form id="form1" name="form1" method="post" action="">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="100" height="30" align="right" valign="middle" scope="col">用户名:</td>
<td width="100" height="30" align="left" valign="middle" scope="col"><label for="textfield"></label>
<input name="username" type="text" id="username" size="15" /></td>
<td width="100" align="center" valign="middle" scope="col"><input type="submit" name="Submit" value="检查" id="Submit" /></td>
</tr>
</table>
</form>
<?php
if(trim($_POST[username]) != ""){ //trim()函数去掉字符串两边的空格
$usr = crypt(trim($_POST[username]),"tm"); //对用户名进行加密
$sql = "select * from tb_user where user = '".$usr."'"; //生成查询语句
$rst = mysql_query($sql,$conn); //执行语句,返回结果集
if(mysql_num_rows($rst) > 0){ //如果结果集大于0
echo "<font color='red'>用户名已存在。</font>"; //说明用户存在
}else{ //否则说明该用户名可用
echo "<font color='green'>恭喜您:用户名可以使用!</font>";
}
}
?>
2、使用md5()函数进行加密
md5()函数使用MD5算法。MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),她的作用是把不同长度的数据信息经过一系列的算法计算成一个128位的数值,即把一个任意长度的字节串变换成一定长的大整数。注意这里是“字节串”而不是“字符串”,因为这种变换只与字节的值有关,与字符集或编码方式无关。md5()函数的格式如下:
string md5(string str[, bool raw_output]);
其中,字符串str为要加密的明文,raw_output参数如果设为true,则函数返回一个二进制形式的密文,该参数默认为false。
3、使用sha1()函数进行加密
和MD5类似的还有SHA全称为Secure Hash Algorithm(安全哈希算法),PHP提供sha1()函数使用的就是SHA算法,函数对的语法如下:
string sha1(string str[, bool raw_output])
函数返回一个40位的十六进制数,如果参数raw_output为true,则返回一个20位的二进制数。默认raw_output为false。
例3:
对一字符串分别进行MD5和SHA加密运算,实例代码如下:
<?
php echo md5('PHPER'); //使用md5()函数加密字符串PHPER
php echo sha1('PHPER); //使用sha1()函数加密字符串PHPER
?>
MD5加密运算和SHA加密运算字符串的对比效果图如图3.1所示。
图3.1 使用md5()和sha1()函数的效果对比