Laravel 加密

加密是一個(gè)使用一些算法將純文本轉(zhuǎn)換為消息的過(guò)程,以便任何第三個(gè)用戶無(wú)法讀取信息。這對(duì)傳輸敏感信息很有幫助,因?yàn)槿肭终咭詡鬏斝畔槟繕?biāo)的可能性較小。

加密是使用稱為 密碼學(xué) 的過(guò)程執(zhí)行的。要被加密的被稱為文本 純文本 和文本或加密之后獲得的消息被稱為 密文 。將密文轉(zhuǎn)換為純文本的過(guò)程稱為 解密 。

laravel使用 aes-256 和 aes-128 加密器,它使用open ssl進(jìn)行加密。包含在laravel中的所有值都使用協(xié)議 消息認(rèn)證代碼 進(jìn)行簽名,以便在加密后,底層值不會(huì)被篡改。

 

組態(tài)

下面顯示了用于在laravel中生成 密鑰 的命令-

php artisan key:generate

請(qǐng)注意,該命令使用php安全隨機(jī)字節(jié)的生成器,您可以看到如下面屏幕截圖所示的輸出 -

上面給出的命令有助于生成可用于web應(yīng)用程序的密鑰。觀察下面顯示的屏幕截圖 -

注意

加密值在 config / app.php 文件中正確對(duì)齊,其中包括兩個(gè)加密參數(shù),即 密鑰 和 密碼 。如果使用此鍵的值未正確對(duì)齊,則laravel中加密的所有值都將不安全。

 

加密過(guò)程

可以通過(guò)在laravel類的控制器中使用 加密助手 來(lái)完成值的 加密 。這些值使用openssl和aes-256密碼進(jìn)行加密。所有加密值都使用消息認(rèn)證碼(mac)進(jìn)行簽名,以檢查加密字符串的任何修改。

下面顯示的代碼在控制器中提及,用于存儲(chǔ)秘密或敏感消息。

 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();
   }
}

 

解密過(guò)程

值的 解密 是用 解密助手 完成的。遵守以下幾行代碼 -

use illuminate\contracts\encryption\decryptexception;

// exception for decryption thrown in facade
try {
   $decrypted = decrypt($encryptedvalue);
} catch (decryptexception $e) {
   //
}

請(qǐng)注意,如果由于使用無(wú)效的mac而導(dǎo)致解密過(guò)程不成功,則會(huì)引發(fā)適當(dāng)?shù)漠惓!?/p>

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频