# 服務 —— 哈希
## 1、簡介
Laravel?`Hash使用該Bcrypt。
Bcrypt是散列密碼的絕佳選擇,因為其”工作因子“是可調整的,這意味著隨著硬件功能的提升,生成哈希所花費的時間也會增加。
## 2、基本使用
可以調用`Hash`門面上的`make`方法散列存儲密碼:
~~~
<?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);
// 驗證新密碼長度...
$user->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}
~~~
此外,還可以使用全局的幫助函數`bcrypt`:
~~~
bcrypt('plain-text');
~~~
### 2.1 驗證哈希密碼
`check`方法允許你驗證給定原生字符串和給定哈希是否相等,然而,如果你在使用Laravel自帶的`AuthController`(詳見[用戶認證](http://laravelacademy.org/post/163.html)一節),就不需要再直接使用該方法,因為自帶的認證控制器自動調用了該方法:
~~~
if (Hash::check('plain-text', $hashedPassword)) {
// 密碼匹配...
}
~~~
### 2.2 檢查密碼是否需要被重新哈希
`needsRehash`方法允許你判斷哈希計算器使用的工作因子在上次密碼被哈希后是否發生改變:
~~~
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}
~~~
- 前言
- 序言
- 序言 ―― 發行版本說明
- 序言 ―― 升級指南
- 序言 ―― 貢獻代碼
- 開始
- 開始 ―― 安裝及配置
- 開始 ―― Laravel Homestead
- 基礎
- 基礎 ―― HTTP路由
- 基礎 ―― HTTP 中間件
- 基礎 ―― HTTP 控制器
- 基礎 ―― HTTP 請求
- 基礎 ―― HTTP 響應
- 基礎 ―― 視圖
- 基礎 ―― Blade模板
- 架構
- 架構 ―― 一次請求的生命周期
- 架構 ―― 應用目錄結構
- 架構 ―― 服務提供者
- 架構 ―― 服務容器
- 架構 ―― 契約
- 架構 ―― 門面
- 數據庫
- 數據庫 ―― 起步
- 數據庫 ―― 查詢構建器
- 數據庫 ―― 遷移
- 數據庫 ―― 填充數據
- Eloquent ORM
- Eloquent ORM ―― 起步
- Eloquent ORM ―― 關聯關系
- Eloquent ORM ―― 集合
- Eloquent ORM ―― 調整器
- Eloquent ORM ―― 序列化
- 服務
- 服務 ―― 用戶認證
- 服務 ―― Artisan 控制臺
- 服務 ―― Laravel Cashier(交易)
- 服務 ―― 緩存
- 服務 ―― 集合
- 服務 ―― Laravel Elixir
- 服務 ―― 加密
- 服務 ―― 錯誤&日志
- 服務 ―― 事件
- 服務 ―― 文件系統/云存儲
- 服務 ―― 哈希
- 服務 ―― 幫助函數
- 服務 ―― 本地化
- 服務 ―― 郵件
- 服務 ―― 包開發
- 服務 ―― 分頁
- 服務 ―― 隊列
- 服務 ―― Redis
- 服務 ―― Session
- 服務 ―― Envoy 任務運行器(SSH任務)
- 服務 ―― 任務調度
- 服務 ―― 測試
- 服務 ―― 驗證