Laravel 加密
加密是一個使用一些算法將純文本轉(zhuǎn)換為消息的過程,以便任何第三個用戶無法讀取信息。這對傳輸敏感信息很有幫助,因為入侵者以傳輸信息為目標(biāo)的可能性較小。
加密是使用稱為 密碼學(xué) 的過程執(zhí)行的。要被加密的被稱為文本 純文本 和文本或加密之后獲得的消息被稱為 密文 。將密文轉(zhuǎn)換為純文本的過程稱為 解密 。
laravel使用 aes-256 和 aes-128 加密器,它使用open ssl進(jìn)行加密。包含在laravel中的所有值都使用協(xié)議 消息認(rèn)證代碼 進(jìn)行簽名,以便在加密后,底層值不會被篡改。
組態(tài)
下面顯示了用于在laravel中生成 密鑰 的命令-
php artisan key:generate
請注意,該命令使用php安全隨機(jī)字節(jié)的生成器,您可以看到如下面屏幕截圖所示的輸出 -
上面給出的命令有助于生成可用于web應(yīng)用程序的密鑰。觀察下面顯示的屏幕截圖 -
注意
加密值在 config / app.php 文件中正確對齊,其中包括兩個加密參數(shù),即 密鑰 和 密碼 。如果使用此鍵的值未正確對齊,則laravel中加密的所有值都將不安全。
加密過程
可以通過在laravel類的控制器中使用 加密助手 來完成值的 加密 。這些值使用openssl和aes-256密碼進(jìn)行加密。所有加密值都使用消息認(rèn)證碼(mac)進(jìn)行簽名,以檢查加密字符串的任何修改。
下面顯示的代碼在控制器中提及,用于存儲秘密或敏感消息。
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(); } }
解密過程
值的 解密 是用 解密助手 完成的。遵守以下幾行代碼 -
use illuminate\contracts\encryption\decryptexception; // exception for decryption thrown in facade try { $decrypted = decrypt($encryptedvalue); } catch (decryptexception $e) { // }
請注意,如果由于使用無效的mac而導(dǎo)致解密過程不成功,則會引發(fā)適當(dāng)?shù)漠惓!?/p>