📜  Laravel-加密

📅  最后修改于: 2020-10-23 08:10:22             🧑  作者: Mango


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

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

Laravel使用AES-256AES-128加密器,后者使用Open SSL进行加密。 Laravel中包含的所有值均使用协议消息身份验证代码进行签名,因此一旦对其进行加密就无法篡改基础值。

组态

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

php artisan key:generate

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

工匠钥匙

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

注意

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

加密过程

可以通过使用Laravel类的控制器中的加密助手来对值进行加密。这些值使用OpenSSL和AES-256密码进行加密。所有加密值都使用消息认证代码(MAC)签名,以检查加密字符串的任何修改。

defaultCommand

控制器中提到了以下所示的代码,该代码用于存储机密或敏感消息。

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