定制 shakib/cakephp-encrypt-decrypt 二次开发

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

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

shakib/cakephp-encrypt-decrypt

最新稳定版本:v2.4

Composer 安装命令:

composer require shakib/cakephp-encrypt-decrypt

包简介

A CakePHP plugin to encrypt data and save in database and also to decrypt data when fethcing from database. You can also encrypt or decrypt all historical data.

README 文档

README

A CakePHP library to encrypt and decrypt data.

Features

  • Encrypt data when saving and decrypt data when fetching data from database.
  • Encrypt & decrypt historical data.

Install

Via Composer

For CakePHP 5:

composer require shakib/cakephp-encrypt-decrypt

For CakePHP 4:

composer require shakib/cakephp-encrypt-decrypt:~2.2

For CakePHP 3.4 and above versions for CakePHP 3.x:

composer require shakib/cakephp-encrypt-decrypt:~1.1

For CakePHP <=3.3:

composer require shakib/cakephp-encrypt-decrypt:1.0

Setup

Add the type in bootstrap.php

TypeFactory::map('encrypted', 'EncryptDecrypt\Database\Type\EncryptType');

Add config value in config\app.php

'Security' => [
    'encryption_key' => env('ENCRYPTION_KEY', 'YOUR-KEY'),
]

Uses

Table structure: Use BLOB \ VARBINARY type for those columns you are want to be encrypted. Such as:

CREATE TABLE `accounts`(
    `id` INT NOT NULL AUTO_INCREMENT,
    `full_name` VARCHAR(100) NOT NULL,    
    `account_number` VARBINARY(255) NOT NULL,    
    `email` VARBINARY(255) NOT NULL,    
    `created` DATETIME NOT NULL,
    `modified` DATETIME NULL,
    PRIMARY KEY(`id`)
) ENGINE = InnoDB;

Map all columns in your Table class.

use Cake\ORM\Table;
use Cake\Database\Schema\TableSchemaInterface;
use EncryptDecrypt\Traits\EncryptDecrypt;

class AccountsTable extends Table
{

   use EncryptDecrypt;
    
    public function initialize(array $config): void
    {

        parent::initialize($config);

        //... rest of initialization

      $this->getSchema()->setColumnType('account_number', 'encrypted');
      $this->getSchema()->setColumnType('email', 'encrypted');

      
    }
}

To encrypt or decrypt historical data, add this method in your table class and run

public function encryptDecryptAllData()
{
  // columns that are in plain text
  $sourceColumns = ['column1', 'column2']; 	
  // columns that need to be encrypted / decrypted
  $destinationColumns = ['column3', 'column4'];

  return $this->encryptAll($this, $sourceColumns, $destinationColumns);
}

To search any data, you can use search text in where clause

$query->where(['email' => 'test@domain.com', 'account_number' => 'xxxxxxxxx']);
}

统计信息

  • 总下载量: 216
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-07-10

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固