php函数之crypt做用户密码验证

在研究一个系统的时候发现该系统的用户密码存储使用的是crypt(用户密码);但是当我新增一个密码为“123456”的用户时,发现crypt('123456')加密后与该系统数据库存放的加密字段对不上。

当我再次运行 crypt('123456') 的时候发现它的密码有发生了变化,这种同一个crypt函数加密出来的密码不一样如何做密码校验?简直崩溃。经过一番查找终于找到原因了,使用方法如下:

<?php 
$pwd='123456';
$pwd_en=crypt($pwd);// 存入数据库用户密码字段

$pwd_login='123456';//获取后面用户登录时的密码
$pwd_login_en=crypt($pwd_login,$pwd_en);// 用crypt(登录的密码, 数据库密码z字段作为sale)
if($pwd_en==$pwd_login_en){
echo '登录成功';
}else{
echo '登录失败';
}


?>

encrypt函数第二个参数如果没有或者为空,那么encrypt($pwd)出来的是变化的,一旦加了第二个salt参数,只要$pwd不变加密后的字符就不变。

参考地址: https://bbs.csdn.net/topics/391967652?list=63031162

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/php函数之crypt做用户密码验证/

赞赏

微信赞赏支付宝赞赏

发表评论