precision-soft / symfony-doctrine-encrypt
doctrine 加密类型
v1.0.0
2024-09-17 18:31 UTC
Requires
- php: >=8.2
- ext-openssl: *
- doctrine/dbal: 3.*
- doctrine/orm: 3.*
- doctrine/persistence: 3.*
- precision-soft/symfony-console: 1.*
- symfony/config: 7.*
Requires (Dev)
README
该扩展将自动注册来自 \PrecisionSoft\Doctrine\Encrypt\Type 的类型作为 Doctrine 类型。
它可以用于任何字符串字段。
你可以随意分叉和修改它.
欢迎贡献.
用途
使用 Doctrine 加密和解密数据。
我正在尝试解决当前解决方案中存在的一些问题
- 使用实体或仅选择字段时,都提供加密和解密功能。
- 简单地进行 WHERE 操作(目前参数必须在设置之前加密)。
用法
- 实体中的值始终为未加密。
- AES256FixedEncryptor 和 AES256FixedType 对的使用目的是为了能够使用 WHERE,因为它会为相同的输入返回相同的结果。
- EntityService::getEncryptor() 将返回用于字段的加密器,如果您需要加密一个值作为 WHERE 参数使用。
- 实体内部
class Customer
{
/**
* @ORM\Column(type="encryptedAES256")
*/
private string $name;
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
}
- 加密未加密的数据库
php bin/console precision-soft:doctrine:database:encrypt
- 解密加密的数据库
php bin/console precision-soft:doctrine:database:decrypt
开发
git clone git@gitlab.com:precision-soft-open-source/symfony/doctrine-encrypt.git
cd doctrine-encrypt
./dc build && ./dc up -d
待办事项
- 简单地进行 WHERE 操作,传递未加密的参数,并自动加密。
- 配置已注册的加密器。
- 有一个 isEncrypted($entity, $fieldName): bool 方法。
- 单元测试。