codelieutenant / laravel-crypto
Laravel Crypto 是一个包,它提供了一个简单易用的 API,用于使用最新的 PHP 和 Laravel 特性进行加密、解密、散列和签名数据。
Requires
- php: >=8.1
- ext-sodium: *
- illuminate/collections: ^8|^9|^10|^11
- illuminate/config: ^8|^9|^10|^11
- illuminate/contracts: ^8|^9|^10|^11
- illuminate/encryption: ^8|^9|^10|^11
- illuminate/hashing: ^8|^9|^10|^11
- illuminate/support: ^8|^9|^10|^11
Requires (Dev)
- orchestra/testbench: ^8.21
- pestphp/pest: ^2.34
- pestphp/pest-plugin-laravel: ^2.3
- phpbench/phpbench: ^1.2
Suggests
- ext-igbinary: Required for Igbinary Serializer
- ext-json: Required for Json Serializer
- ext-msgpack: Required for MessagePack Serializer
This package is auto-updated.
Last update: 2024-10-01 00:20:45 UTC
README
什么是 Laravel Crypto?为什么我应该使用它?
Laravel Crypto 是一个库,它为大多数常见的加密函数提供了易于使用的 API。它设计得既简单又安全。它使用当今最佳和最安全的算法。
Laravel 的默认加密是安全的,但速度较慢。Laravel Crypto 提供了更快、更安全的加密和散列算法。它是 Laravel 的 EncryptionServiceProvider
的替代品,并在底层使用 libsodium
。只要您使用默认的 Laravel 加密,您就不需要在代码中进行任何更改。
入门
安装
composer require codelieutenant/laravel-crypto
发布配置文件
php artisan vendor:publish --provider="CodeLieutenant\LaravelCrypto\ServiceProvider"
用 LaravelCrypto 的 ServiceProvider 替换 Laravel 的 EncryptionServiceProvider
为了激活此包,您需要将 Laravel 的 EncryptionServiceProvider
替换为 LaravelCryptoServiceProvider
。
在 config/app.php
中,将 Illuminate\Encryption\EncryptionServiceProvider::class
替换为 CodeLieutenant\LaravelCrypto\ServiceProvider::class
。根据您使用的 Laravel 版本,您可以选择两种方法之一。
Laravel 9.0 及以上版本
use CodeLieutenant\LaravelCrypto\ServiceProvider as LaravelCryptoServiceProvider; use Illuminate\Encryption\EncryptionServiceProvider as LaravelEncryptionServiceProvider; // ... 'providers' => ServiceProvider::defaultProviders() + ->replace([ + LaravelEncryptionServiceProvider::class => LaravelCryptoServiceProvider::class, + ]) ->merge([ // ... ]) ->toArray(), // ...
Laravel 8.0
use CodeLieutenant\LaravelCrypto\ServiceProvider as LaravelCryptoServiceProvider; 'providers' => [ // ... - Illuminate\Encryption\EncryptionServiceProvider::class, + LaravelCryptoServiceProvider::class, // ... ],
配置
为了使用 Laravel Crypto,您需要更改 config/app.php
文件中的 cipher
。可能的值
仅适用于 Laravel Crypto
- Sodium_AES256GCM
- Sodium_XChaCha20Poly1305
- Sodium_AEGIS128(计划在 php8.4 上推出)
- Sodium_AEGIS256(计划在 php8.4 上推出)
来自 Laravel 加密(LaravelCrypto 作为回退支持 EncryptionServiceProvider 实现)
- AES-256-GCM
- AES-128-GCM
- AES-256-CBC(默认)
- AES-128-CBC
'cipher' => 'Sodium_AES256GCM',
生成密钥
对于加密,Laravel 命令 php artisan key:generate
是很好的,并且可以使用,但由于此包可用于哈希和签名数据,因此提供了生成密钥的命令。
php artisan crypto:keys
它为 Laravel cipher
配置生成向后兼容的密钥,并为 Sodium
算法生成密钥。此命令有多个选项,您可以通过运行 php artisan crypto:keys --help
查看它们,因此此命令可以用作 key:generate
的替代品。
在现有 Laravel 项目中使用
此包不提供与 Laravel 默认加密的向后兼容性(如果配置已更改)。如果您想在现有项目中使用 Laravel Crypto,则需要重新加密所有数据。