garethnic / laracrypt
为 Laravel 添加数据库加密功能
dev-master / 1.0.x-dev
2016-03-16 10:24 UTC
Requires
- php: ~7.0
- ext-libsodium: ^1.0.2
- illuminate/support: ~5.1
- paragonie/halite: ^1.5
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
This package is not auto-updated.
Last update: 2024-09-14 19:19:57 UTC
README
Laravel 包,用于处理数据库加密。在当前项目状态下,只能实现对称加密。
安装
请确保已安装 libsodium。
通过 Composer
将以下内容添加到您的 composer.json
文件中
"garethnic/laracrypt": "dev-master"
将 garethnic\ServiceProvider 添加到您的 config/app.php 提供者数组中
garethnic\laracrypt\LaraCryptServiceProvider::class,
然后执行以下操作
$ php artisan vendor:publish
以复制配置文件。在此文件中,您可以指定存储和加载密钥的位置。
'path' => storage_path('keys/encryption.key')
对于您的数据库模式,请确保加密列的类型为 BLOB
。
用法
您首先需要创建您的密钥
$ php artisan laracrypt:key
这将生成一个密钥并将其保存到 storage/keys
。您也可以通过静态 generateKey
方法程序化生成密钥。
将来将添加更多选项以使密钥存储更加灵活。
加密/解密有多种方法
AppServiceProvider
// Encrypting all attributes Post::saving(function ($post) { foreach($post['attributes'] as $key => $value) { $post->$key = LaraCrypt::encrypt($value); } }); // Encrypting all attributes Post::saving(function ($post) { $post->body = LaraCrypt::encrypt($post->body); });
或在您的 Model
中执行
public function setBodyAttribute($value) { $this->attributes['title'] = LaraCrypt::encrypt($value); }
解密
使用 LaraCrypt::decrypt($text)
就这么简单。
在您的 Model
中
public function getBodyAttribute($value) { return LaraCrypt::decrypt($value); }
待办事项
- 添加配置选项
- 添加对非对称加密的支持
- 整理代码
- 编写测试
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
测试
$ composer test
贡献
请参阅 CONTRIBUTING 和 CONDUCT 了解详细信息。
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。