tiagocomti / yii2-cryptbox
为你们提供的简易加密箱
v1.0.23
2024-01-02 18:50 UTC
Requires
- php: >=7.2 || ^8.1 || ^8.2
- ext-sodium: *
- aws/aws-sdk-php: ^3.277.10
- yiisoft/yii2: ^2.0.13
README
Yii 2 加密类工具
使用 Yii 2 应用程序的最佳方式是快速创建小型项目。
此类业务目的是简化并消除使用 PHP 加密数据的难度
此第一个项目正在合作开发,一个独立版本正在开发中
目录结构
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");