smolowik/propel-behavior-mysql-encryption

允许您使用mysql加密列的行为

1.0.0 2017-02-22 07:15 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:40:50 UTC


README

## propel 2.x 的 mysql_encryption 行为 此行为是为 propel 2.x 编写的,并使用 mysql 函数 AES_ENCRYPT 和 AES_DECRYPT 进行加密。

安装

composer require smolowik/propel-behavior-mysql-encryption

## 如何使用

首先,您需要定义加密密钥

Smolowik\Propel\Passphrase::createInstance("YOUR_SECRET_KEY");

然后,将行为添加到表中

<table name="author" phpName="Author">
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
    <column name="first_name" type="varchar" size="50" required="true"/>
    <column name="last_name" type="varchar" size="255" required="true"/>
    <column name="email" type="varchar" size="100" required="true"/>
    <behavior name="mysql_encryption">
        <parameter name="columns" value="first_name,last_name,email" />
    </behavior>
</table>

在这一部分,您定义哪些列应该被加密。在我们的示例中,这些列是:first_name、last_name 和 email。

<parameter name="columns" value="first_name,last_name,email" />

在构建模型并更新数据库模式后,您应该能够像使用表中的任何其他列一样使用加密列。我使用此行为来实现带有搜索和排序的列表(分页)。我还用它来从数据库中读取和写入单个行。如果您想以更复杂的方式使用它,您应该自行彻底测试。

## 性能测试

测试是在包含字段 id、first_name、last_name 和 email 的 Author 表上进行的。first_name、last_name 和 email 字段被加密。表中有 33097 行。

无加密

  • 插入(1000 行) 546ms
  • findByFirstName(10 行) 37ms
  • 分页(第 20 页,50 项,按 first_name 排序) 31ms

使用 mysql_encryption 行为进行加密

  • 插入(1000 行) 584ms
  • findByFirstName(10 行) 128ms
  • 分页(第 20 页,50 项,按 first_name 排序) 139ms

使用 uwdoem/encryption 行为进行加密

  • 插入(1000 行) 577ms
  • findByFirstName(10 行) 不可用
  • 分页(第 20 页,50 项,按 first_name 排序) 不可用