garethnic / laracrypt

为 Laravel 添加数据库加密功能

dev-master / 1.0.x-dev 2016-03-16 10:24 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:19:57 UTC


README

Latest Version on Packagist Software License Total Downloads

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

贡献

请参阅 CONTRIBUTINGCONDUCT 了解详细信息。

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件