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)进行签名,以检查加密字符串的任何修改。
下面显示的代码在控制器中提及,用于存储秘密或敏感消息。
<?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(); } }
解密过程
值的 解密 是用 解密助手 完成的。遵守以下几行代码 -
use Illuminate\Contracts\Encryption\DecryptException; // Exception for decryption thrown in facade try { $decrypted = decrypt($encryptedValue); } catch (DecryptException $e) { // }
请注意,如果由于使用无效的MAC而导致解密过程不成功,则会引发适当的异常。
下一章:Laravel 哈希
散列是将字符串转换为较短的固定值或表示原始字符串的键的过程。Laravel使用 哈希 门面,它提供了一种以散列方式存储密码的安全方式。 基本用法以下屏幕截图显示了如何创建一个名为 passwordContro ...