Laravel 加密

Laravel 加密

加密是一种使用某些算法将明文转换为消息的过程,以便任何第三方用户无法读取信息。这对于传输敏感信息非常有帮助,因为入侵者很少有机会针对传输的信息进行攻击。

加密是通过一种称为 密码学 的过程来执行的。要加密的文本称为 明文 ,加密后获得的文本或消息称为 密文 。将密文转换为明文的过程称为 解密

Laravel使用 AES-256AES-128 加密器,使用Open SSL进行加密。 Laravel中包含的所有值都使用协议 消息认证码 进行签名,以便一旦加密,底层值就无法被篡改。

配置

在Laravel中生成密钥的命令如下所示 −

php artisan key:generate

请注意,该命令使用PHP安全随机字节生成器,您可以在下面给出的屏幕截图中看到输出结果 –

Laravel 加密

上述命令用于生成可用于 Web 应用的密钥。请查看下面显示的屏幕截图。

注意

加密的值在 config/app.php 文件中正确对齐,该文件包含两个加密参数,分别为 keycipher 。如果使用该密钥加密的值未正确对齐,所有使用 Laravel 加密的值都将不安全。

加密过程

可以通过 Laravel 类的控制器使用 encrypt helper 来对值进行加密。这些值使用 OpenSSL 和 AES-256 密码进行加密。所有加密的值都会使用消息身份验证码(MAC)进行签名,以检查加密字符串是否被修改。

Laravel 加密

以下代码显示在控制器中,并用于存储一个秘密或敏感消息。

<?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 intid
      * @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而无法成功,则会抛出适当的异常。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程