如果:crypt(原始口令,数据库里的字符串)=数据库里的字符串
那么:说明原始口令是正确的
crypt('123456','1$ ...
这样不对的~默认的 crypt函数如果不加salt,每次都是随机不一样的
按照你的说法, 数据库密码= crypt(用户密码,加密后的字符串);这里的加密后的字符串是什么字符串,是怎么加密的,现在最最关键的是我需要这个加密后的字符串。也就是 salt 不知道。
本帖最后由 dowhile 于 2017-2-11 09:46 编辑
chk 发表于 2017-2-10 15:23 static/image/common/back.gif
这样不对的~默认的 crypt函数如果不加salt,每次都是随机不一样的
按照你的说法, 数据库密码= crypt(用 ...
哥们,你就试调用一下嘛.我们用都应用了很多年了.
当盐值本身就是md5结果时,crypt()就返回一模一样的值来告诉你:这个结果确实是md5加密的结果之一
这么说你应该可以理解了吧.如果不是这么用,所有的php脚本都无法校验口令啦
加密后的字符串,就是user表的password这个字段的内容 dowhile 发表于 2017-2-10 17:19 static/image/common/back.gif
哥们,你就试调用一下嘛.我们用都应用了很多年了.
当盐值本身就是md5结果时,crypt()就返回一模一样的值来 ...
那php代码就是大概这样的
php获取的密码为 123456,交给一个变量 $pwd
$pwd='123456'; //用户密码
$salt=crypt($pwd); //salt这个变量是盐值,crypt这个函数如果后面不给参数 salt 的时候每次生成的MD5都不一样的
echo crypt($pwd,$salt);//这里最终得到的值和数据库的值不一样,原因在于上面的变量 $salt 的值每次都不一样,所有加密的结果也就不一样。
哭~~~
哥们你能把你那里应用密码验证这里代码贴下吗,非常感谢。
本帖最后由 dowhile 于 2017-2-11 09:56 编辑
chk 发表于 2017-2-10 18:35 static/image/common/back.gif
那php代码就是大概这样的
php获取的密码为 123456,交给一个变量 $pwd
思路已经很清晰了,你要真的还看不明白,就帮不上你了.要理解crypt()函数:不带第二参数时,生成密文;带第二个参数时,校验密文
根据用户编号,从数据库user表里读出password值,赋值给变量A
如果A=crypt(原始口令,A)
那么,口令通过
dowhile 发表于 2017-2-11 09:45 static/image/common/back.gif
思路已经很清晰了,你要真的还看不明白,就帮不上你了.要理解crypt()函数:不带第二参数时,生成密文;带第二个 ...
蟹蟹,知道了:P非常感谢。。。。。。
我贴出我写的PHP代码吧,以后的同学可以参考下.
<?php
$pwd=$_POST['pwd'];//从前台获取明文密码
$pwd='pwd1993';//我这里设定一个明文密码
//在数据库里面找到lisa的对应md5值字段
$apwd='$1$9a1.cd..$cOITqcn76xz4TX3I.slmU1';//数据库lisa用户的值
$res=crypt($pwd,$apwd);//最后通过$res来对比,如果一样直接用IF来判断就可以了
if($res!==$apwd){
echo '登陆失败';
exit();
}
//然后下面就可以自由做事情啦!
?>再次感谢 dowhile 兄弟的思路
页:
1
[2]