precision-soft/symfony-doctrine-encrypt

doctrine 加密类型

v1.0.0 2024-09-17 18:31 UTC

This package is auto-updated.

Last update: 2024-09-18 08:10:12 UTC


README

该扩展将自动注册来自 \PrecisionSoft\Doctrine\Encrypt\Type 的类型作为 Doctrine 类型。

它可以用于任何字符串字段。

你可以随意分叉和修改它.

欢迎贡献.

用途

使用 Doctrine 加密和解密数据。

我正在尝试解决当前解决方案中存在的一些问题

  • 使用实体或仅选择字段时,都提供加密和解密功能。
  • 简单地进行 WHERE 操作(目前参数必须在设置之前加密)。

用法

  • 实体中的值始终为未加密。
  • AES256FixedEncryptorAES256FixedType 对的使用目的是为了能够使用 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 方法。
  • 单元测试。

受以下启发