PHP+MySQL应用中使用XOR运算加密算法
法用户。
(1)根据其提交的用户名(明文)和密码(密钥)信息重新加密,并使用加密后的信息与数据库中存储的密码信息进行比较,如果相等,则用户合法,否则,为非法用户。 (2)根据数据库中存储的密码信息(明文)和用户输入的密码(密钥)信息进行解密,并把加密后的信息与用户提交的用户名进行比较,如果相等,则用户合法,否则,为非法用户。 两种方式都可以实现第3个目的,本例,将采用第2种方式。本例的实现代码可在18.4.1节“用户登录”和18.4.2节“检查用户”的实现基础之上实现,其中“用户登录”页面无需变化,“检查用户”的实现参考如下。 1 <?php
Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved 地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008 电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134 《中华人民共和国增值电信业务经营许可证》闽B2-20100024 ICP备案:闽ICP备05037997号
4 session_register("user_name"); //注册$user_name变量,注意没有$符号 5 6 require_once("sys_conf.inc"); //系统配置文件,包含数据库配置信息 7 require_once("encrypy_xor.php"); //包含xor加密函数文件 8 9 //连接数据库 10 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD); 11 mysql_select_db($DBNAME); //选择数据库my_chat 12 13 //查询是否存在登录用户信息 14 $str="select name,password from user where name =''$user_name''"; 15 $result=mysql_query($str,$link_id); //执行查询 16 @$rows=mysql_num_rows($result); //取得查询结果的记录笔数 17 $user_name=
Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved 地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008 电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134 《中华人民共和国增值电信业务经营许可证》闽B2-20100024 ICP备案:闽ICP备05037997号
18 $password=
Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved 地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008 电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134 《中华人民共和国增值电信业务经营许可证》闽B2-20100024 ICP备案:闽ICP备05037997号
19 $password_en=myEncrypt($user_name,$password); //加密用户信息 20 21 //对于老用户 22 if($rows!=0) 23 { 24 list($name,$pwd)=mysql_fetch_row($result); 25 $password_de=myDecrypt($pwd,$password); //解密用户信息 26 27 //如果密码输入正确 28 if($user_name==$password_de) 29 { 30 $str="update user set is_online =1 where name =''$user_name'' and password=''$password_en''"; 31 $result=mysql_query($str, $link_id); //执行查询 32 require("main.php"); //转到聊天页面 33 } 34 //密码输入错误 35 else 36 { 37 require("relogin.php"); 38 } 39 } 40 //对于新用户,将其信息写入数据库 41 else 42 { 43 $str="insert into user (name,password,is_online) values(''$user_name'', ''$password_en'',1)"; 44 $result=mysql_query($str, $link_id); //执行查询 45 require("main.php"); //转到聊天页面 46 } 47 //关闭数据库 48 mysql_close($link_id); 49 ?> 第7行引入了加密函数文件encrypy_xor.php,包括上一小节介绍的两个函数。 第19行,使用用户提交的用户名和密码得到加密后的密码值,并且对于新用户,在第44行将这个加密后的值存储在数据库中。 另外,对于老用户,在第24获取数据库中用户名和加密后的密码信息,并在25行利用这两个值进行解密,然后在第28行通过比较解密后的值与用户提交的用户名信息来检查用户的合法性。 自动生成密钥 上一部分介绍了如何使用XOR加密算法进行对用户信息的加密,其中,用户所输入的口令信息实际上成为了加密算法中的密钥,而用户名作为明文使用,虽然这能很好地完成功能,但是在逻辑上,这种方法似乎有些不合理。 本文将介绍一种自动生成密钥的技术,可以使用自动生成的密钥对用户提交的密码明文加密,使逻辑更加合理一些。 本例,假设生成的密钥为512位。代码如下。 1 <!--keygen.php:自动生成密钥------------------------------------> |
|||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |