鍍金池/ 教程/ PHP/ 加密
門(mén)面
Laravel Homestead
安裝及配置
測(cè)試
HTTP 中間件
加密
升級(jí)指南
幫助函數(shù)
應(yīng)用目錄結(jié)構(gòu)
集合
新手入門(mén)指南-簡(jiǎn)單任務(wù)管理系統(tǒng)
任務(wù)調(diào)度
查詢(xún)構(gòu)建器
視圖
驗(yàn)證
Laravel Cashier(訂購(gòu)&支付&發(fā)票)
本地化
隊(duì)列
調(diào)整器
分頁(yè)
文件系統(tǒng)/云存儲(chǔ)
貢獻(xiàn)代碼
哈希
HTTP 控制器
緩存
遷移
HTTP 請(qǐng)求
Laravel Elixir
發(fā)行版本說(shuō)明
Envoy 任務(wù)運(yùn)行器(SSH任務(wù))
序列化
Session
起步
帶用戶(hù)功能的任務(wù)管理系統(tǒng)
起步
用戶(hù)授權(quán)
郵件
事件
填充數(shù)據(jù)
HTTP 路由
服務(wù)提供者
Blade 模板引擎
包開(kāi)發(fā)
用戶(hù)認(rèn)證
Artisan 控制臺(tái)
HTTP 響應(yīng)
集合
服務(wù)容器
關(guān)聯(lián)關(guān)系
一次請(qǐng)求的生命周期
契約
Redis
錯(cuò)誤&日志

加密

1、配置

在使用 Laravel的加密器之前,應(yīng)該在 config/app.php配置文件中設(shè)置 key選項(xiàng)為 32位隨機(jī)字符串。如果這個(gè)值沒(méi)有被設(shè)置,所有 Laravel加密過(guò)的值都是不安全的。

2、基本使用

2.1 加密

你可以使用 Crypt門(mén)面對(duì)數(shù)據(jù)進(jìn)行加密,所有加密值都使用 OpenSSLAES-256-CBC密碼進(jìn)行加密。此外,所有加密值都通過(guò)一個(gè)消息認(rèn)證碼(MAC)來(lái)檢測(cè)對(duì)加密字符串的任何修改。

例如,我們可以使用 encrypt方法加密 secret屬性并將其存儲(chǔ)到 Eloquent模型:

<?php

namespace App\Http\Controllers;

use Crypt;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class UserController extends Controller{
    /**
     * Store a secret message for the user.
     *
     * @param  Request  $request
     * @param  int  $id
     * @return Response
     */
    public function storeSecret(Request $request, $id)
    {
        $user = User::findOrFail($id);

        $user->fill([
            'secret' => Crypt::encrypt($request->secret)
        ])->save();
    }
}

2.2 解密

當(dāng)然,你可以使用 Crypt門(mén)面上的 decrypt方法進(jìn)行解密。如果該值不能被解密,例如 MAC無(wú)效,將會(huì)拋出一個(gè) Illuminate\Contracts\Encryption\DecryptException異常:

use Illuminate\Contracts\Encryption\DecryptException;

try {
    $decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) {
    //
}