hernandev/laravel-aead

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

0.1.2 2018-04-21 16:08 UTC

This package is auto-updated.

Last update: 2024-08-25 05:12:43 UTC


README

LaravelAEAD 是一个库,为 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 hernandev/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 和会话将使用它。