nickcv/yii2-encrypter

Yii2的OpenSSL加密器

安装次数: 438,293

依赖项: 2

建议者: 0

安全: 0

星标: 19

关注者: 6

分支: 15

开放问题: 3

类型:yii2-extension

1.1.0 2015-02-04 09:50 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:50:12 UTC


README

Yii2 OpenSSL加密器版本 1.1.0

此扩展用于双向加密。使用的加密方法是AES,您可以选择使用128位256位加密。

您还可以决定是否在加密字符串上使用base64编码,以便更容易存储,但请注意,额外的编码将始终增加字符串的大小。

由于OpenSSL在加密和解密过程中的速度非常快(快30倍),因此已用其替代mcrypt。

安装

安装此扩展的首选方式是通过composer

运行以下命令之一:

php composer.phar require --prefer-dist nickcv/yii2-encrypter "*"

或添加

"nickcv/yii2-encrypter": "*"

到您的composer.json文件的require部分。

设置

扩展安装完成后,您可以通过手动在web.php文件中添加配置或使用命令行安装程序来随机生成您的加密密码和IV。

手动安装

在您的web.php文件的components部分添加以下行。

return [
    'class'=>'\nickcv\encrypter\components\Encrypter',
    'globalPassword'=>'YourPassword',
    'iv'=>'YourIV',
    'useBase64Encoding'=>true,
    'use256BitesEncoding'=>false,
];

建议您使用base64编码来简化加密字符串的存储。

IV必须始终为16位长,如果您使用多字节字符,请记住这一点。

自动安装

修改您的console.php配置文件,将加密器添加到启动模块列表

'bootstrap' => ['log','encrypter'],

然后将模块添加到模块列表

'modules' => [
    'encrypter' => 'nickcv\encrypter\Module',
],

此时,您将能够简单地从应用程序目录的根目录执行命令./yii encrypter/setup

该命令将在您的应用程序config目录中自动生成配置文件encrypter.php。生成的配置文件将包含随机生成的密码和IV。

现在,您只需将扩展添加到您的web.php配置文件中即可

'encrypter' => require(__DIR__ . DIRECTORY_SEPARATOR . 'encrypter.php'),

基本用法

现在,您可以在应用程序的任何部分手动使用加密器来加密字符串

\Yii::$app->encrypter->encrypt('string to encrypt');

或解密加密字符串

\Yii::$app->encrypter->decrypt('string to decrypt');

行为

该扩展还包含一个行为,您可以将它轻松地附加到任何ActiveRecord模型。

使用以下语法附加行为。

public function behaviors()
{
    return [
        'encryption' => [
            'class' => '\nickcv\encrypter\behaviors\EncryptionBehavior',
            'attributes' => [
                'attributeName',
                'otherAttributeName',
            ],
        ],
    ];
}

该行为将在将数据保存到数据库之前自动加密所有数据,并在检索后解密。

请注意,该行为将使用扩展的当前配置进行加密。

控制台命令

如果已安装控制台模块,您还可以使用控制台命令./yii encrypter/encrypt./yii encrypter/decrypt

要了解如何安装控制台模块,请参阅本文档中的"自动安装"说明。

单元测试

该扩展完全是基于TDD构建的。要启动测试,请进入扩展目录并执行codecept run命令。

警告

没有密码和IV,解密数据非常困难,请保存它们的副本以避免丢失所有数据。

不应使用双向加密来存储密码:您应使用如sha1之类的单向加密函数和SALT。