当前位置:  开发笔记 > 编程语言 > 正文

Laravel 4 - 哈希相同的密码给出不同的值

如何解决《Laravel4-哈希相同的密码给出不同的值》经验,为你挑选了1个好方法。

我试图使用该Auth::attempt()方法验证用户并且它一直失败,所以我最终得到了以下代码:

$arr = array();
$arr['verified'] = Hash::make('1234') . ' ; ' . Hash::make('1234');
return json_encode($arr);

这就是结果:

{"verified":"$2y$10$V4yXBUcxealfLrzOE\/xAD.sJ8qpNhrMA6K6dENBBXYqaVx1zSETgy ; $2y$10$C9xpOWLTUyfy1KL.Y3Tot.KWADmQYFK\/HAf6uZGGXTKcVh52qHS4m"}

如您所见,第一个哈希给出$2y$10$V4yXBUcxealfLrzOE\/xAD.sJ8qpNhrMA6K6dENBBXYqaVx1zSETgy,第二个哈希给出$2y$10$C9xpOWLTUyfy1KL.Y3Tot.KWADmQYFK\/HAf6uZGGXTKcVh52qHS4m

这应该与数据库无关,即使在存储时,我有一个60个字符的密码字段.

有任何想法吗?



1> thpl..:

这是完全正常的,也是它应该工作的方式.Laravel使用Bcrypt进行散列,因此在散列过程中会生成随机盐.盐将成为哈希的一部分,这就是为什么你得到两个不同的结果.

非常有效的算法正在自动考虑盐.这种方法几乎不可能使用彩虹表.

这不是一个错误,它是额外的安全性,没有任何努力.

鉴于你的例子,你的两个哈希都会返回true:



虽然$hash1并且$hash2包含不同的哈希值,但是对于给定的基本字符串,它们将会评估为true.

生成的哈希长度为60个字符.因此,应确保存储散列的列的最小大小为60个字符

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有