首页 > 解决方案 > Laravel如何用盐创建sha256哈希

问题描述

我有一个使用客户端 Sha256 散列的正在运行的应用程序。
我想改用 Laravel 服务器端 bcrypt 散列。

我的策略是用 bcrypt 包装所有密码,所以我有bcrypt(sha256('password')),然后在用户尝试登录时重新哈希密码,所以我只有bcrypt('password').

我的问题是在用户尝试使用 Sha256 密码登录时对其进行身份验证。

我尝试通过运行
if (hash('sha256', 'password' . 'salt') == $stored_pw)
但没有运气来验证它们。我只是相当确定客户端散列只是附加了盐,我不确定 Laravelhash函数是否添加了它自己的盐。

这是客户端从密码 1234567 创建的哈希:$5$a0FpUG9JUgkj1d6H$eSSzXebYU87wPAWSTRJGyWw/kOMgDvPqcri4CI1QCV0
我正在尝试使用盐、密码和 Laravel 哈希函数重新创建相同的哈希。

如何指定 Sha256 函数应使用特定的盐?

标签: laravellaravel-5

解决方案


尝试。

use phpseclib\Crypt\Hash;
or
use Hash

\Hash::make($request->password);

或者

$hash = Hash::make('secret');

$input = 'secret';
if(Hash::check($input, $hash)){
    // the input matches the secret
}

推荐阅读