- Laravel 教程
- Laravel - 首頁
- Laravel - 概述
- Laravel - 安裝
- Laravel - 應用結構
- Laravel - 配置
- Laravel - 路由
- Laravel - 中介軟體
- Laravel - 名稱空間
- Laravel - 控制器
- Laravel - 請求
- Laravel - Cookie
- Laravel - 響應
- Laravel - 檢視
- Laravel - Blade 模板
- Laravel - 重定向
- Laravel - 資料庫操作
- Laravel - 錯誤與日誌
- Laravel - 表單
- Laravel - 本地化
- Laravel - Session
- Laravel - 驗證
- Laravel - 檔案上傳
- Laravel - 傳送郵件
- Laravel - Ajax
- Laravel - 錯誤處理
- Laravel - 事件處理
- Laravel - Facades
- Laravel - Contracts
- Laravel - CSRF 保護
- Laravel - 身份驗證
- Laravel - 授權
- Laravel - Artisan 命令列
- Laravel - 加密
- Laravel - 雜湊
- 理解發布流程
- Laravel - 遊客使用者許可權
- Laravel - Artisan 命令
- Laravel - 分頁自定義
- Laravel - Dump Server
- Laravel - Action URL
- Laravel 有用資源
- Laravel - 快速指南
- Laravel - 有用資源
- Laravel - 討論
Laravel - 加密
加密是使用某些演算法將純文字轉換為訊息的過程,以便任何第三方使用者都無法讀取資訊。這對於傳輸敏感資訊非常有用,因為入侵者攻擊傳輸資訊的可能性較小。
加密是透過稱為密碼學的過程執行的。要加密的文字稱為明文,加密後獲得的文字或訊息稱為密文。將密文轉換為明文的過程稱為解密。
Laravel 使用AES-256 和 AES-128 加密器,它使用 OpenSSL 進行加密。Laravel 中包含的所有值都使用訊息認證碼協議進行簽名,以便一旦加密,底層值就不會被篡改。
配置
在 Laravel 中生成金鑰的命令如下所示:
php artisan key:generate
請注意,此命令使用 PHP 安全隨機位元組生成器,您可以看到如下所示的輸出截圖:
上面給出的命令有助於生成可在 Web 應用程式中使用的金鑰。請觀察下面的截圖:
注意
加密值在config/app.php檔案中正確對齊,其中包括兩個加密引數,即key和cipher。如果使用此金鑰的值未正確對齊,則 Laravel 中加密的所有值都將不安全。
加密過程
可以使用 Laravel 類控制器的encrypt 輔助函式來加密值。這些值使用 OpenSSL 和 AES-256 密碼進行加密。所有加密的值都使用訊息認證碼 (MAC) 進行簽名,以檢查加密字串是否有任何修改。
以下程式碼在控制器中提及,用於儲存秘密或敏感訊息。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class DemoController 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' => encrypt($request->secret)
])->save();
}
}
解密過程
值的解密使用decrypt 輔助函式完成。觀察以下程式碼:
use Illuminate\Contracts\Encryption\DecryptException;
// Exception for decryption thrown in facade
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
請注意,如果由於使用了無效的 MAC 而解密過程不成功,則會丟擲相應的異常。
廣告