webiny/crypt

Webiny Crypt 组件

v1.6.1 2017-09-29 08:12 UTC

README

Crypt 组件提供了生成随机数和字符串的方法,还包括密码散列和密码散列验证,以及字符串加密和解密的方法。它内部使用的是密码学安全的算法。

免责声明:此库未经安全专家审查。

安装组件

安装组件的最佳方式是使用 Composer。此库需要您也将仓库添加到您的 composer.json 文件中。

composer require webiny/crypt

要查看此包的其他版本,请访问Packagist 页面

使用 Crypt

class MyClass
{
    use Webiny\Component\Crypt\CryptTrait;

    function myMethod()
    {
        $this->crypt()->encrypt('to encrypt', 'secret key');
    }
}

生成随机整数

要生成随机整数,只需将范围传递给 Crypt 实例即可。

    $randomInt = $crypt->generateRandomInt(10, 20); // e.g. 15

生成随机字符串

当您想要生成随机字符串时,有多种选择。您可以调用通用的 generateRandomString 方法,或者调用 generateUserReadableString 方法来获取一个更易读的字符串,其中不包含任何特殊字符。还有一个名为 generateHardReadableString 的方法,它使用特殊字符(除字母和数字外)来使字符串更加“复杂”。以下是一些示例

    // generate a string from a defined set of characters
    $randomString = $crypt->generateRandomString(5, 'abc'); // e.g. cabcc

    // generate a string that contains only letters (lower & upper case and numbers)
    $randomString = $crypt->generateUserReadableString(5); // A12uL

    // generate a string that can contain special characters
    $randomString = $crypt->generateHardReadableString(5); // &"!3g

密码散列和验证

    // hash password
    $passwordHash = $crypt->createPasswordHash('login123'); // $2y$08$GgGha6bh53ofEPnBawShwO5FA3Q8ImvPXjJzh662/OAWkjeejAJKa

    // (on login page) verify the hash with the correct password
    $passwordsMatch = $crypt->verifyPasswordHash('login123', $passwordHash); // true or false

加密和解密字符串

    // encrypt it
    $encrypted = $crypt->encrypt('some data', 'abcdefgh12345678');

    // decrypt it
    $decrypted = $crypt->decrypt($result, 'abcdefgh12345678'); // "some data"

Crypt 配置

您可以从三个不同的内部加密库中进行选择

  1. OpenSSL - 这是默认库
  2. Sodium - 内部使用 paragonie/halite 进行密码散列、密码验证、加密和解密的库。请注意,此库非常占用 CPU 资源。
  3. Mcrypt - 这是已弃用的库,将在达到 PHP v7.2 版本后删除

要切换库,只需在配置中设置不同的 Bridge

Crypt:
    Bridge: \Webiny\Component\Crypt\Bridge\Sodium\Crypt

然后,在您的代码中只需调用

\Webiny\Components\Crypt\Crypt::setConfig($pathToYourYaml);

自定义 Crypt 驱动

要创建自定义 Crypt 驱动,首先您需要创建一个实现了 \Webiny\Component\Crypt\Bridge\CryptInterface 的类。一旦实现了所有请求的方法,您现在需要更改组件配置中的 Bridge 路径。

资源

要运行单元测试,您需要使用以下命令

$ cd path/to/Webiny/Component/Crypt/
$ composer.phar install
$ phpunit