joelwmale / laravel-encryption
一个用于使用 OpenSSL 在 Laravel 中轻松加密和解密模型字段的软件包。
2.1.1
2024-09-03 06:41 UTC
Requires
- php: ^8.1
- ext-json: *
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- nesbot/carbon: ^2.71
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.13
- pestphp/pest: ^2.24
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.2
README
一个用于使用 OpenSSL 在 Laravel 中轻松加密和解密模型字段的软件包。
主要功能
- 轻松加密和解密模块属性
- 最小化配置
- 提供了一系列的 Eloquent 构建器以方便查询
- 支持更多可加密数据的类型转换
安装
您可以通过 composer 安装此软件包
composer require joelwmale/laravel-encryption
用法
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Joelwmale\LaravelEncryption\Traits\EncryptsAttributes; class User extends Model { use EncryptsAttributes; protected $encryptableAttributes = [ 'first_name', 'last_name', 'date_of_birth', 'email_verified_at', ]; protected $encryptableCasts = [ 'date_of_birth' => 'date', 'email_verified_at' => 'datetime' ]; }
配置
发布配置文件
配置文件如下所示
return [ /** * Enable or disable the encryption. */ 'enabled' => env('LARAVEL_ENCRYPTION_ENABLED', true), /** * The encryption key. * * Default: your app key. */ 'key' => env('LARAVEL_ENCRYPTION_KEY', null), /** * The encryption cipher. * * Supports any cipher method supported by openssl_get_cipher_methods(). * * Default: AES-256-CBC. */ 'cipher' => env('LARAVEL_ENCRYPTION_CIPHER', 'AES-256-CBC'), ];
如果您需要更改配置,请随时发布配置文件。
php artisan vendor:publish --provider="Joelwmale\LaravelEncryption\LaravelEncryptionServiceProvider"
配置要加密的模型属性
此软件包将仅加密 $encryptableAttributes
数组中的字段,其余模型将保持未加密和未修改。
protected $encryptableAttributes = [ 'first_name', 'last_name', ];
这在仅需要加密特定值而不加密整个数据库的场景中非常有用。
类型转换加密值
由于加密值可能相当长,您需要将它们存储为 text
字段,这意味着您必须允许原生列类型。
此外,由于 Laravel 处理类型转换的方式(以及其优先级),您目前无法对加密字段使用原生类型转换。
因此,我们使用自己的数组来确定哪些字段应该转换为哪种类型
protected $encryptableCasts = [ 'date_of_birth' => 'date', ];
支持的类型转换
类型转换支持仍在增长,并将随着时间的推移而添加。
- date
- datetime
- json
测试
composer test
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。