|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,皮皮我的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。 在开辟PHP使用中假如不想本人开辟新的加密算法,还可以使用PHP供应的crypt()函数来完成单向加密功效。
懂得crypt()
只需有一点利用非Windows平台经历的读者都能够对crypt()相当熟习,这一函数完成被称作单向加密的功效,它可以加密一些密码,但不克不及反过去将暗码从头转换为本来的密码。crypt()函数界说以下。
string crypt (string input_string [, string salt])
个中,input_string参数是需求加密的明文字符串,第二个可选的salt是一个位字串,可以影响加密的密码,进一步扫除被破解的能够性。缺省情形下,PHP利用一个2个字符的DES搅扰串,假如体系利用的是MD5(参考下一节内容),PHP则会利用一个12个字符的搅扰串。可以经由过程履行上面的号令发明体系将要利用的搅扰串的长度。
print "My system salt size is: ". CRYPT_SALT_LENGTH;
crypt()撑持4种加密算法,表19.1显示了其撑持的算法和响应的salt参数的长度。
表crypt()撑持四种加密算法
算法Salt长度CRYPT_STD_DES2-character (Default)CRYPT_EXT_DES9-characterCRYPT_MD512-character beginning with $1$CRYPT_BLOWFISH16-character beginning with $2$
从外表上看,crypt()的函数仿佛没有甚么用途,但该函数切实其实被普遍用来包管体系暗码的完全性。由于,单向加密的口令即便落入第三方的手里,因为不克不及被复原为明文,也没有甚么大用途。
用crypt()完成用户身份验证
上一局部复杂引见了crypt()函数的功效,上面使用其来完成用户的身份验证,其所要完成的方针同19.2.3节所引见的分歧。
1 <!--check_user_crypt.php:利用crypt() 函数验证用户---------------->
2 <?php
3 $user_name=$_POST["user_name"];
4 require_once("sys_conf.inc"); //体系设置装备摆设文件,包括数据库设置装备摆设信息
5
6 //毗连数据库
7 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);
8 mysql_select_db($DBNAME); //选择数据库my_chat
9
10 //查询是不是存在登录用户信息
11 $str="select name,password from user where name ='$user_name'";
12 $result=mysql_query($str,$link_id); //履行查询
13 @$rows=mysql_num_rows($result); //获得查询了局的纪录笔数
14 $user_name=$_SESSION["user_name"];
15 $password=$_POST["password"];
16 $salt = substr($password, 0, 2);
17 $password_en=crypt($password,$salt); //利用crypt()对用户暗码停止加密
18
19 //关于老用户
20 if($rows!=0)
21 {
22 list($name,$pwd)=mysql_fetch_row($result);
23
24 //假如暗码输出准确
25 if($pwd==$password_en)
26 {
27 $str="update user set is_online =1 where name ='$user_name' and password='$password_en'";
28 $result=mysql_query($str, $link_id);//履行查询
29 require("main.php"); //转到聊天页面
30 }
31 //暗码输出毛病
32 else
33 {
34 require("relogin.php");
35 }
36
37 }
38 //关于新用户,将其信息写入数据库
39 else
40 {
41 $str="insert into user (name,password,is_online) values('$user_ name','$password_en',1)";
42 $result=mysql_query($str, $link_id); //履行查询
43 require("main.php"); //转到聊天页面
44 }
45 //封闭数据库
46 mysql_close($link_id);
47 ?>
示例与上一节所引见的利用XOR加密算法来回护用户信息十分相似,其中心局部在于第16、17行利用crypt()函数获得加密后的暗码,而经由过程在第25行对照数据库中的暗码和加密后的暗码是不是相等来反省用户是不是正当。
上面,经由过程一个实例来看一下加密后的暗码会酿成甚么模样。
例如,用户名为rock,暗码为123456,则加密后的暗码为:
12tir.zIbWQ3c
下面就完成了一个复杂的用户身份验证体系。在利用crypt()回护主要的秘密信息时,需求注重的是,在缺省形态下利用crypt()并非最平安的,只能用在对平安性请求较低的体系中。算是1个熟悉的过程,所以c语言的基础有就更好,没有也不怕。 |
|