Laravel?`Hash使用該Bcrypt。
Bcrypt是散列密碼的絕佳選擇,因?yàn)槠洹惫ぷ饕蜃印笆强烧{(diào)整的,這意味著隨著硬件功能的提升,生成哈希所花費(fèi)的時(shí)間也會(huì)增加。
可以調(diào)用Hash
門面上的make
方法散列存儲(chǔ)密碼:
<?php
namespace App\Http\Controllers;
use Hash;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller{
/**
* 更新用戶密碼
*
* @param Request $request
* @param int $id
* @return Response
*/
public function updatePassword(Request $request, $id)
{
$user = User::findOrFail($id);
// 驗(yàn)證新密碼長度...
$user->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}
此外,還可以使用全局的幫助函數(shù)bcrypt
:
bcrypt('plain-text');
check
方法允許你驗(yàn)證給定原生字符串和給定哈希是否相等,然而,如果你在使用Laravel自帶的AuthController
(詳見用戶認(rèn)證一節(jié)),就不需要再直接使用該方法,因?yàn)樽詭У恼J(rèn)證控制器自動(dòng)調(diào)用了該方法:
if (Hash::check('plain-text', $hashedPassword)) {
// 密碼匹配...
}
needsRehash
方法允許你判斷哈希計(jì)算器使用的工作因子在上次密碼被哈希后是否發(fā)生改變:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}
更多建議: