在研究一个系统的时候发现该系统的用户密码存储使用的是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不变加密后的字符就不变。
发表评论