如何在PHP中利用crypt()对用户的身份进行验证

介绍

如何在PHP中利用crypt()对用户的身份进行验证?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

crypt()函数定义如下地穴
字符串(字符串input_string [string盐])

其中,input_string参数是需要加密的明文字符串,第二个可选的盐是一个位字串,能够影响加密的暗码,进一步排除被破解的可能性。缺省情况下,PHP使用一个2个字符的DES干扰串,如果系统使用的是MD5(参考下一节内容),PHP则会使用一个12个字符的干扰串。可以通过执行下面的命令发现系统将要使用的干扰串的长度。

打印,我的系统盐大小是:“。CRYPT_SALT_LENGTH;

crypt()支持4种加密算法,表19.1显示了其支持的算法和相应的盐参数的长度。

表crypt()支持四种加密算法

算法盐长度CRYPT_STD_DES2-character(默认)CRYPT_EXT_DES9-characterCRYPT_MD512-character从$ 1 $ CRYPT_BLOWFISH16-character开始$ 2 $


从表面上看,crypt()的函数似乎没有什么用处,但该函数的确被广泛用来保证系统密码的完整性。因为,单向加密的口令即使落入第三方的手里,由于不能被还原为明文,也没有什么大用处。
用crypt()实现用户身份验证
上一部分简单介绍了crypt()函数的功能,下面利用其来实现用户的身份验证,其所要实现的目标同19.2.3节所介绍的一致。

代码如下:


& lt; !——check_user_crypt.php:使用crypt()函数验证用户- - - - - - - - - - - - - - - - -在
& lt; ?php
$ user_name=$ _POST [“user_name"];
require_once (“sys_conf.inc");//系统配置文件,包含数据库配置信息
//连接数据库
$ link_id=mysql_connect ($ DBHOST dbus美元DBPWD美元);
mysql_select_db(美元DBNAME);//选择数据库my_chat
//查询是否存在登录用户信息
$ str=把≡衩?密码从用户名=& # 39;$ user_name # 39;“;
$结果=mysql_query (str, link_id美元);//执行查询
@ $行=mysql_num_rows(结果);//取得查询结果的记录笔数
user_name美元=$ _SESSION (“user_name");
$密码=$ _POST [“password"];
$盐=substr(密码,美元0,2);
$ password_en=墓穴(密码,盐美元);//使用crypt()对用户密码进行加密
//对于老用户
if($行!=0)
{
列表(名称、pwd美元)=mysql_fetch_row(结果);
//如果密码输入正确
如果($ pwd==$ password_en)
{
$ str=案掠没柚胕s_online=1, name=& # 39;美元user_name # 39;和密码=& # 39;$ password_en& # 39;“;
$结果=mysql_query (str, link_id美元);//执行查询
要求(“main.php");//转到聊天页面
}
//密码输入错误其他

{
要求(“relogin.php");
}
}
//对于新用户,将其信息写入数据库其他

{
$ str=安迦胗没?名、密码is_online)值(& # 39;美元user_名字# 39;,& # 39;password_en& # 39;美元,1)“;
$结果=mysql_query (str, link_id美元);//执行查询
要求(“main.php");//转到聊天页面
}
//关闭数据库
mysql_close ($ link_id);
?比;



示例与上一节所介绍的使用XOR加密算法来保护用户信息非常类似,其核心部分在于第16日17日行使用crypt()函数获取加密后的密码,而通过在第25行比较数据库中的密码和加密后的密码是否相等来检查用户是否合法。

下面,通过一个实例来看一下加密后的密码会变成什么样子。

例如,用户名为岩石,密码为123456,则加密后的密码为:

12行动。zIbWQ3c

上面就实现了一个简单的用户身份验证系统。在使用crypt()保护重要的机密信息时,需要注意的是,在缺省状态下使用crypt()并不是最安全的,只能用在对安全性要求较低的系统中。

看完上述内容,你们掌握如何在PHP中利用crypt()对用户的身份进行验证的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

如何在PHP中利用crypt()对用户的身份进行验证