ywh/doctrine-encryption-extension

Doctrine2加密扩展

此软件包的官方仓库似乎已不存在,因此软件包已被冻结。

1.3 2018-08-30 09:29 UTC

This package is not auto-updated.

Last update: 2024-06-09 04:03:34 UTC


README

此扩展允许使用php-encryption加密实体字段。

此扩展基于并使用Doctrine2行为扩展

设置和自动加载

阅读文档或查看示例代码,了解如何以最优化方式设置和使用扩展。

可加密实体示例

可加密注解

  1. @YWH\Encryptable\Mapping\Annotation\Encryptable这个类注解表示一个类是否可加密。可用的配置选项
    • usePassword密钥是否受密码保护?默认:true
  2. @YWH\Encryptable\Mapping\Annotation\EncryptionKey这个注解表示这个列将包含用于加密数据的加密密钥。仅在使用受密码保护的密钥时必要
  3. @YWH\Encryptable\Mapping\Annotation\Encrypted这个注解表示这个列将被加密。可用的配置选项
    • type数据类型。应该是有效的Doctrine类型之一。默认:string

关于设置加密密钥和加密数据列的说明

EncryptionKeyEncrypted列必须设置为字符串类型

    /**
     * @var string
     *
     * @ORM\Column(name="encryption_key", type="text")
     * @YWH\EncryptionKey()
     */
    private $encryptionKey;

    /**
     * @ORM\Column(name="encrypted_data", type="string")
     * @YWH\Encrypted()
     */
    private $encryptedData;
<?php
namespace Entity;

use Doctrine\ORM\Mapping as ORM;
use YWH\Encryptable\Mapping\Annotation as YWH;

/**
 * @ORM\Entity
 * @YWH\Encryptable(usePassword=true)
 */
class Article
{
    /** @ORM\Id @ORM\GeneratedValue @ORM\Column(type="integer") */
    private $id;
    
    /**
     * @var string
     *
     * @ORM\Column(name="encryption_key", type="text")
     * @YWH\EncryptionKey()
     */
    private $encryptionKey;

    /**
     * @ORM\Column(type="string", length=128)
     * @YWH\Encrypted()
     */
    private $title;

    /**
     * @ORM\Column(name="date", type="string")
     * @YWH\Encrypted(type="datetime")
     */
    private $date;

    public function getId()
    {
        return $this->id;
    }

    public function setEncryptionKey($key)
    {
        $this->encryptionKey = $key;
    }

    public function getEncryptionKey()
    {
        return $this->encryptionKey;
    }

    public function setTitle($title)
    {
        $this->title = $title;
    }

    public function getTitle()
    {
        return $this->title;
    }

    public function setDate(\DateTime $date)
    {
        $this->date = $date;
    }

    public function getDate()
    {
        return $this->date;
    }
}