drjele / doctrine-encrypt
v4.3.2
2024-06-11 10:50 UTC
Requires
- php: >=8.2
- ext-openssl: *
- doctrine/dbal: 3.*
- doctrine/orm: 3.*
- doctrine/persistence: 3.*
- drjele/symfony-console: 4.*
- symfony/config: 7.*
Requires (Dev)
README
不再维护,已迁移至 https://gitlab.com/precision-soft-open-source/symfony/doctrine-encrypt
该包会自动将 \Drjele\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 drjele:doctrine:database:encrypt
- 解密加密的数据库
php bin/console drjele:doctrine:database:decrypt
开发
git clone git@gitlab.com:drjele-symfony/doctrine-encrypt.git
cd doctrine-encrypt
rm -rf .git/hooks && ln -s ../dev/git-hooks .git/hooks
./dc build && ./dc up -d
待办事项
- 简单地进行 WHERE 操作,传递未加密的参数,并自动进行加密。
- 配置已注册的加密器。
- 有一个 isEncrypted($entity, $fieldName): bool 方法。
- 单元测试。