my_password_de=chair
用 XOR 算法实现身份验证
上两部分分别介绍了使用 XOR 运算进行信息加密/解密的原理和实现,下面,将使用这
一方法来对用户的登录密码进行加密。本例中,为了保护用户的密码,系统想要达到的目
的如下。
·在用户注册时,用户需要添写用户密码表单。
·除用户本人之外,其他任何人都无法获取其密码信息,包括系统设计者和数据库管理员。
·系统能根据用户输入的密码验证用户的合法性。
为了达到以上目的,使用 XOR 算法时可以选择用户名作为明文,而密钥是用户自定义的
密码,然后将加密后的用户名存储在数据库中。
另外,在用户登录的时候,有以下两种方式来验证合法用户。
(1)根据其提交的用户名(明文)和密码(密钥)信息重新加密,并使用加密后的信息与数据库
中存储的密码信息进行比较,如果相等,则用户合法,否则,为非法用户。
(2)根据数据库中存储的密码信息(明文)和用户输入的密码(密钥)信息进行解密,并把加密
后的信息与用户提交的用户名进行比较,如果相等,则用户合法,否则,为非法用户。
两种方式都可以实现第 3 个目的,本例,将采用第 2 种方式。本例的实现代码可在 18.4.1
“
”
节 用户登录 和 18.4.2
“
”
“
”
节 检查用户 的实现基础之上实现,其中 用户登录 页面无需变
“
”
化, 检查用户 的实现参考如下。
36 <?php
37 session_start();//装载 Session
库,一定要放在首行
38 $user_name=$_POST["user_name"];
39 session_register(“user_name”);//注册$user_name 变量,注意没有$
符号
40
41 require_once(“sys_conf.inc”);//
系统配置文件,包含数据库配置信息
42 require_once(“encrypy_xor.php”);//包含 xor
加密函数文件
43
44 //
连接数据库
45 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);
46 mysql_select_db($DBNAME);//选择数据库 my_chat
47
48 //
查询是否存在登录用户信息
49 $str=”selectname,passwordfromuserwherename=’$user_name’”;
50 $result=mysql_query($str,$link_id);//
执行查询
51 @$rows=mysql_num_rows($result);//
取得查询结果的记录笔数