codelieutenant/laravel-crypto

Laravel Crypto 是一个包,它提供了一个简单易用的 API,用于使用最新的 PHP 和 Laravel 特性进行加密、解密、散列和签名数据。

v1.0.1 2024-03-15 18:47 UTC

This package is auto-updated.

Last update: 2024-10-01 00:20:45 UTC


README

Run Tests GitHub issues GitHub stars GitHub license

什么是 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,则需要重新加密所有数据。