smolowik / propel-behavior-mysql-encryption
允许您使用mysql加密列的行为
1.0.0
2017-02-22 07:15 UTC
Requires
- php: ^7
- propel/propel: ~2.0@dev
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.1
- phpunit/phpunit: 4.*
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 排序) 不可用