background image

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);//

  

取得查询结果的记录笔数