kuatasmn / laravel-aead
Laravel 的高级加密与关联数据 (AEAD)。
Requires
- php: >=7.2.0
- ext-json: *
- ext-sodium: *
- illuminate/support: ^5.6
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.0
- symfony/var-dumper: ^4.0
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-CBC
和 AES-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 和会话将使用它。