kuatasmn/laravel-aead

Laravel 的高级加密与关联数据 (AEAD)。

0.1.2 2018-04-21 16:08 UTC

This package is auto-updated.

Last update: 2024-09-24 22:15:13 UTC


README

LaravelAEAD 是一个库,它为 Laravel 提供了高级加密与关联数据 (AEAD)。

摘要

这是 Diego Hernandes 的 hernandev/laravel-aead 包的一个分支。

此包在安装并启用后,将替换 Laravel 的默认加密实现,目前该实现仅支持同一种分组密码的两个变体:AES-128-CBCAES-256-CBC

仅有这两个选项的原因可能基于 PHP 本身的历史,比如最近对 MCrypt 的废弃。

截至 PHP 7.2,我们现在可以依赖出色的 libsodium 扩展,它支持最安全的 AEAD 构造及其变体。

AEAD 代表高级加密,带关联数据,它们是结合了 流密码消息认证码 (MAC) 的算法。

这种组合的结果是一个加密方案,为现代应用程序提供了三个有用的方面:

  • 保密性
  • 完整性
  • 真实性

有关 AEAD 的更多信息,我强烈建议阅读 libsodium 文档,它阐述了主要部分,但如果你关心安全性,阅读 IETF RFC 的构建也是一件有趣的事情。

可用的构造

这些都是 libsodium AEAD 构造,以及与此包一起使用的相应密钥。

安装和配置

安装库

composer require kutasman/laravel-aead

更改身份验证提供程序(在 config/app.php 中)

    // YOU MUST COMMENT OUT THE DEFAULT ENCRYPTION CLASS>
    // Illuminate\Encryption\EncryptionServiceProvider::class,
    // THIS ONE SHOULD BE USED INSTEAD.
    LaravelAEAD\Providers\EncryptionServiceProvider::class,

配置密码(也在 config/app.php 中)

    'cipher' => 'XCHACHA20-POLY1305-IETF',

使用

完成此安装后,所有默认 Laravel 加密都将使用这些相对构造/密码执行。

这意味着如果你使用 encrypt()decrypt(),它们将使用此包而不是默认加密。

这也意味着应该加密的 cookie 和会话将使用它。