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