定制 gracious/doctrine-encryption-bundle 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

gracious/doctrine-encryption-bundle

最新稳定版本:5.0.0

Composer 安装命令:

composer require gracious/doctrine-encryption-bundle

包简介

Simple bundle for adding encryption type to Doctrine

README 文档

README

Simple bundle to add 2 new types to Doctrine

  • encrypted
  • encryptedArrayCollection
  • hashed

It relies on libSodium for encryption

Installation

The Installation is quite simple:

  1. Require the Bundle via composer:
composer require gracious/doctrine-encryption-bundle
  1. Add the following to your doctrine.yaml:
types:
  encrypted: 'Gracious\DoctrineEncryptionBundle\Type\Encrypted'
  encryptedArrayCollection: 'Gracious\DoctrineEncryptionBundle\Type\EncryptedArrayCollection'
  hashed: 'Gracious\DoctrineEncryptionBundle\Type\Hashed'
  1. Generate a 64 character encryption key, you could to this the following way:
sodium_bin2hex(random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES));
  1. Add the following two settings to your .env file:
ENABLE_ENCRYPTION=true
ENCRYPTION_KEY=[PASTE ENCRYPTION KEY HERE]

Settings

There are 2 settings at the moment, both are env vars

  • ENABLE_ENCRYPTION - true / false

  • ENCRYPTION_KEY - 64 character hexadecimal string

Generating a key

You can do 2 things to generate a key, either type one yourself or run:

sodium_bin2hex(random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES));

Nonce

Nonces are automatically generated for each encrypted value and are added to the returned value as follows:

<nonce|encrypted value>

Doctrine settings

The following has to be added to you doctrine.yaml

types:
  encrypted: 'Gracious\DoctrineEncryptionBundle\Type\Encrypted'
  encryptedArrayCollection: 'Gracious\DoctrineEncryptionBundle\Type\EncryptedArrayCollection'
  hashed: 'Gracious\DoctrineEncryptionBundle\Type\Hashed'

The block would look something like this:

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        # With Symfony 3.3, remove the `resolve:` prefix
        url: '%env(resolve:DATABASE_URL)%'
        types:
          encrypted: 'Gracious\DoctrineEncryptionBundle\Type\Encrypted'
          encryptedArrayCollection: 'Gracious\DoctrineEncryptionBundle\Type\EncryptedArrayCollection'
          hashed: 'Gracious\DoctrineEncryptionBundle\Type\Hashed'

Usage

To use either of the 3 types in your entity just replace the column type with

@ORM\Column(type="encrypted")

or

@ORM\Column(type="encryptedArrayCollection")

or

@ORM\Column(type="hashed")

统计信息

  • 总下载量: 12.61k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 5
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-12-04