laravel散列中的缺陷

wtzytmuj  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(168)

我们正在使用Laravel Framework 5.7.15 with PHP version: 7.2.14-1,我们使用下面的代码来生成临时密码,然后在数据库中对它进行哈希。在大约80次所有密码哈希与字符串匹配,但有大约3个不匹配的字符串,我搜索了原因,但没有出现...

$input['tmp_password'] = substr(str_shuffle("0123456789"), 0, 4); // Random four digits
$input['password'] = Hash::make($input['tmp_password']);
w8f9ii69

w8f9ii691#

正如注解中所述,除了str_shuffle之外,还有更好的方法来生成随机密码。使用这种方法,生成的密码总是包含相同的字符,只是顺序不同,这使得它很容易被猜测。
一个更好的方法示例是使用Str类中的helper方法random

use Illuminate\Support\Str;

$password = Hash::make(Str::random(40)); // 40 being the number of chars generated
bqjvbblv

bqjvbblv2#

在你的代码的一万次迭代中,我无法导致一个哈希失败。

$input = [];

for($i = 0; $i < 10000; $i++) {
    $input['tmp_password'] = substr(str_shuffle("0123456789"), 0, 4);
    $input['password'] = Hash::make($input['tmp_password']);

    if(!Hash::check($input['tmp_password'], $input['password'])) {
        print "OH SHIT\n";
    }
}

在你没有显示的代码中,还有一些地方出错了。正如你在注解中指出的,你在用$user做一些其他的事情,这些事情根本不在你的代码示例中。

相关问题