目录

Laravel - 加密( Encryption)

加密是使用某些算法将纯文本转换为消息的过程,以便任何第三个用户都无法读取信息。 这有助于传输敏感信息,因为入侵者瞄准传输信息的机会较少。

使用称为Cryptography的过程执行Cryptography 。 要加密的文本称为Cipher Text ,加密后获得的文本或消息称为Cipher Text 。 将密文转换为纯文本的过程称为Decryption

Laravel使用AES-256AES-128加密器,它使用Open SSL进行加密。 Laravel中包含的所有值都使用协议Message Authentication Code进行签名,以便在加密后基础值不会被篡改。

配置 (Configuration)

用于在Laravel中生成key的命令如下所示 -

php artisan key:generate

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

工匠钥匙

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

Note

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

加密过程

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

defaultCommand

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

<?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();
   }
}

解密过程

使用decrypt helper完成值的decrypt helper 。 请注意以下代码行 -

use Illuminate\Contracts\Encryption\DecryptException;
// Exception for decryption thrown in facade
try {
   $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
   //
}

请注意,如果由于使用了无效的MAC而导致解密过程失败,则会引发相应的异常。

↑回到顶部↑
WIKI教程 @2018