教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
  网站导航: 库库中文网 · 网站编程教程 · PHP教程 · PHP综合技巧  

PHP里面运用crypt()完成用户身份验证

教程推荐
『PHP里面运用crypt()完成用户身份验证』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2006-9-14 
     在开发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_DES 2-character (Default)
  CRYPT_EXT_DES 9-character
  CRYPT_MD5 12-character beginning with $1$
  CRYPT_BLOWFISH 16-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()并不是最安全的,只能用在对安全性要求较低的系统中。
  
  
    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。

】【关闭窗口
  上一页:
  下一页:后面的文章暂时没有更新了,请多关注QQgb.com
 ·网站导航: 库库中文网 · 网站编程教程 · PHP教程 · PHP综合技巧
PHP综合技巧:相关文章
PHP综合技巧点击榜
推荐教程PHP里面运用crypt()完成用户身份
推荐教程PHP+MySQL运用里面运用XOR运算加
推荐教程PHP+MySQL运用里面运用XOR运算加
推荐教程通过缓存数据库结果增涨PHP性能
推荐教程通过缓存数据库结果增涨PHP性能
推荐教程通过缓存数据库结果增涨PHP性能
推荐教程将Oracle 10g内置地安全特性用于
推荐教程水火也相容!灵活在IIS里面配置
推荐教程WIN主机配置PHP地若干疑难处理办
推荐教程缓存技术详谈—php
PHOTOSHOP - 基础教程 抠图专题 蒙版专题 3DsMax 基础 设计实例 Maya设计实例
3D设计教程
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright ? 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL. 电脑硬件 电脑知识 教程学习
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光