bcrypt ('password') 和 Hash::make ('password') 一样吗?
在 Laravel 认证系统里注册用户时,采用 bcrypt
方法加密密码。
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'confirmation_code' => str_random(60),
]);
在 Laravel 文档的 「Hashing」一节,给出的修改密码范例中,使用 Hash::make
方法加密密码。
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
我想知道它们底层实现是不是基于一样的代码逻辑。而且,我发现使用 Hash::make
和 bcrypt
加密同样一个密码得到的结果,每次也不一样。
var_dump(bcrypt('123456'));
var_dump(bcrypt('123456'));
// 输出
string(60) "$2y$10$2p/qUwhEBq1JCRHy/1jY/uPUaG30W2amvu/hPXItYA3BLSsWhP5RC"
string(60) "$2y$10$gJIQbqjza9jto9vzamLzP.ZUTUCeJLxiXyFSendByH7uh/V7N1yGO"
而且,在我写更新密码功能时,验证输入的旧密码时,就要使用 Hash::check
检查。
Hash::check($inputPassword, Auth::user()->password);
这个问题很困扰我,希望知道的同学解答一下~
推荐文章: