tiagocomti/yii2-cryptbox

为你们提供的简易加密箱

安装量: 2,377

依赖项: 0

建议者: 0

安全性: 0

星标: 2

关注者: 1

分支: 0

类型:yii2-extension

v1.0.23 2024-01-02 18:50 UTC

README

Yii 2 加密类工具


使用 Yii 2 应用程序的最佳方式是快速创建小型项目。

此类业务目的是简化并消除使用 PHP 加密数据的难度

此第一个项目正在合作开发,一个独立版本正在开发中

Latest Stable Version Total Downloads build

目录结构

  yii2-cryptbox/        Main folter of our project
     |
     | - commands/          Folter to easy commands for generate your keys
     | - helpers/           Helpers 

需求

  • 此项目模板的最低要求是您的 Web 服务器支持 PHP 5.6.0。
  • Yii2 稳定版
  • Libsodium

安装

通过 Composer 安装

如果您没有 Composer,您可以按照 getcomposer.org 上的说明进行安装。

composer --prefer-dist tiagocomti/yii2-cryptbox

现在您可以通过以下方式调用我们的类

Cryptbox::generateKeyPair("ANY_SALT_YOU_WANT")

配置

数据库

编辑 config/web.php 或 console.php 文件并添加以下内容

//Keep this name
'cryptbox' => [
   'class' => 'tiagocomti\cryptbox\Cryptbox',
   //A path to save our keys.
   'keysPath' =>  __DIR__."/../../keys/",
   // Execute: php yii cryptBox/crypt/encode '{Your key}'
   // This key will be used for 
   'secret' => '{"1":95,"2":86,"3":65,"4":77,"5":79,"6":83,"7":66,"8":82,"9":73,"10":78,"11":68,"12":65,"13":82,"14":79,"15":72,"16":79,"17":74,"18":69,"19":65,"20":77,"21":65,"22":78,"23":72,"24":65,"25":83,"26":79,"27":65,"28":68,"29":69,"30":85,"31":83,"32":95}',
   // Less security but faster
   'enableCache' => true,
   //In seconds
   'timeCache' => 800
],

编辑 console.php 文件并添加以下内容

'modules' => [
     // ... other modules ...
     'cryptBox' => [
         'class' => 'tiagocomti\cryptbox\commands\Module',
     ],
 ],

注意

  • 检查并编辑 config/ 目录中的其他文件,根据需要自定义应用程序。

示例

###在 PHP 文件中安全地保存数据库密码 - 个人技巧

我们需要设置加密密码,使用此命令

此命令将请求您输入密码,绝对不要在命令行中传递密码,等待 shell 输入。

php yii cryptBox/crypt/db-password
php yii cryptBox/crypt/db-password
password: very_nice_pass_for_my_db
Paste it in your db conf:
{"1":67,"2":87,"3":55,"4":108,"5":86,"6":103,"7":122,"8":75,"9":79,"10":80,"11":87,"12":118,"13":106,"14":56,"15":72,"16":104,"17":47,"18":86,"19":98,"20":74,"21":116,"22":70,"23":52,"24":107,"25":50,"26":66,"27":51,"28":114,"29":65,"30":90,"31":87,"32":100,"33":53,"34":71,"35":89,"36":86,"37":106,"38":122,"39":54,"40":89,"41":109,"42":98,"43":81,"44":55,"45":48,"46":81,"47":118,"48":86,"49":111,"50":109,"51":71,"52":52,"53":73,"54":72,"55":112,"56":75,"57":50,"58":51,"59":74,"60":57,"61":77,"62":80,"63":67,"64":52,"65":50,"66":119,"67":80,"68":98,"69":113,"70":117,"71":72,"72":79,"73":113,"74":54,"75":83,"76":52,"77":74,"78":90,"79":71,"80":118,"81":66,"82":74,"83":117,"84":114,"85":56,"86":65,"87":61,"88":61}

在您的 config/db.php 中,我们需要创建自己的连接类并设置新的加密密码

return [
    //Set your own db/connection class.
    'class' => 'app\db\Connection',
    'dsn' => 'mysql:host=127.0.0.1;dbname=database_name',
    'username' => 'user_db',
    'password' => '{"1":67,"2":87,"3":55,"4":108,"5":86,"6":103,"7":122,"8":75,"9":79,"10":80,"11":87,"12":118,"13":106,"14":56,"15":72,"16":104,"17":47,"18":86,"19":98,"20":74,"21":116,"22":70,"23":52,"24":107,"25":50,"26":66,"27":51,"28":114,"29":65,"30":90,"31":87,"32":100,"33":53,"34":71,"35":89,"36":86,"37":106,"38":122,"39":54,"40":89,"41":109,"42":98,"43":81,"44":55,"45":48,"46":81,"47":118,"48":86,"49":111,"50":109,"51":71,"52":52,"53":73,"54":72,"55":112,"56":75,"57":50,"58":51,"59":74,"60":57,"61":77,"62":80,"63":67,"64":52,"65":50,"66":119,"67":80,"68":98,"69":113,"70":117,"71":72,"72":79,"73":113,"74":54,"75":83,"76":52,"77":74,"78":90,"79":71,"80":118,"81":66,"82":74,"83":117,"84":114,"85":56,"86":65,"87":61,"88":61}',
    'charset' => 'utf8',
];

看看我们的新连接类的示例

<?php
namespace app\db;

use app\helpers\Strings;
use yii\db\Exception;

class Connection extends \yii\db\Connection
{
    /**
     * @throws Exception
     */
    public function __construct($config = [])
    {
        \Yii::info("Iniciando base de dados", "api");
        return parent::__construct([
            'dsn' => $config["dsn"],
            'username' => $config["username"],
            'password' => Cryptbox::decryptDBPass($config["password"]),
            'charset' => $config["charset"],
        ]);
    }
}

检查我们的配置

php yii cryptBox/crypt/check-db

提示

如果您需要更改密码并且启用了缓存,请运行

php yii cache/flush-all

###使用非对称加密将加密内容保存到文件

如果您想使用系统密钥来加密这些文件,可以使用如下方式

return Cryptbox::safeWriteInFile("/tmp/teste", "teste", Cryptbox::getOurSecret());

如果您想使用系统密钥来加密这些文件,可以使用如下方式

return Cryptbox::safeWriteInFile("/tmp/teste", "teste", "Very Nice Secret");