aware/doctrine-aes-bundle

使用 AES 加密 doctrine 实体中的字段

安装次数: 1,520

依赖者: 0

建议者: 0

安全性: 0

类型:symfony-bundle

2.1.1 2024-09-11 12:54 UTC

This package is auto-updated.

Last update: 2024-09-11 12:55:20 UTC


README

PHP: >=8 Doctrine: >= 2.9

警告: Doctrine 必须 配置为使用 PHP 8 属性! (不是 注解)

安装

composer require aware/doctrine-aes-bundle

配置

aware_doctrine_aes.yaml

aware_doctrine_aes:
    key_directory_path: '%kernel.project_dir%'
    encryptor_class: AES256

encryptor_class 选项

  • AES128
  • AES192
  • AES256

用法

数据库

实体

使用 #[Encrypted] 属性在一个实体中加密字段。
使用导入: use Aware\DoctrineAESBundle\Configuration\Encrypted;

命令

加密所有标记的字段

doctrine:encrypt:database

解密所有标记的字段

doctrine:decrypt:database

检查加密状态

doctrine:encrypt:status

程序化

加密服务

可以使用服务来完成加密: use Aware\DoctrineAESBundle\Service\EncryptionService;

示例

$enc = $encryptionService->encrypt(text: 'test');
$dec = $encryptionService->decrypt(text: $enc);

加密搜索服务(慢!)

您可以使用服务在加密字段上进行搜索(类似 MYSQL FIND): use Aware\DoctrineAESBundle\Service\EncryptedSearchService;

这是因为需要临时解密所有搜索字段(在单独的 xml 文件中),行数越多,搜索时间越长。返回一个 ORM 查询实例。

示例

 $query = $encryptedSearchService->search(User::class, ['username', 'lastIp'], ['robbe', '1']);
 $result = $query->getResult();
额外选项
$entity (字符串) 实体名称
$fields (数组) 要查询的字段名称数组
$searchValues (数组) 字段搜索字符串数组,顺序相同
$onlyIds (布尔值) 不返回查询,但返回与查询匹配的 id 数组
$orMode (布尔值) 不是每个字段都必须匹配
$concatMode (布尔值) 将所有字段和搜索字符串按数组顺序相加。对于诸如姓名 + 姓氏等事物很有用