Laravel 加密

加密是一个使用一些算法将纯文本转换为消息的过程,以便任何第三个用户无法读取信息。这对传输敏感信息很有帮助,因为入侵者以传输信息为目标的可能性较小。

加密是使用称为 密码学 的过程执行的。要被加密的被称为文本 纯文本 和文本或加密之后获得的消息被称为 密文 。将密文转换为纯文本的过程称为 解密 。

laravel使用 aes-256 和 aes-128 加密器,它使用open ssl进行加密。包含在laravel中的所有值都使用协议 消息认证代码 进行签名,以便在加密后,底层值不会被篡改。

 

组态

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

php artisan key:generate

请注意,该命令使用php安全随机字节的生成器,您可以看到如下面屏幕截图所示的输出 -

上面给出的命令有助于生成可用于web应用程序的密钥。观察下面显示的屏幕截图 -

注意

加密值在 config / app.php 文件中正确对齐,其中包括两个加密参数,即 密钥 和 密码 。如果使用此键的值未正确对齐,则laravel中加密的所有值都将不安全。

 

加密过程

可以通过在laravel类的控制器中使用 加密助手 来完成值的 加密 。这些值使用openssl和aes-256密码进行加密。所有加密值都使用消息认证码(mac)进行签名,以检查加密字符串的任何修改。

下面显示的代码在控制器中提及,用于存储秘密或敏感消息。

 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而导致解密过程不成功,则会引发适当的异常。

相关文章