benjaminstout/php-crypt

PHP的简单加密库 – 支持libsodium (NaCl),OpenSSL,Mcrypt等

v1.0 2019-04-24 18:48 UTC

This package is auto-updated.

Last update: 2024-09-06 03:49:00 UTC


README

build:

PHP的一个独立、可扩展、轻量级的加密接口。支持:libsodium (NaCl),OpenSSLMcrypt,等等。

PHP-Crypt 允许您快速将一系列现代加密库集成到您的PHP应用程序中,无需手动实现复杂的自定义加密方法。PHP-Crypt 可以防止常见的加密陷阱,同时提供选择PHP可用最新加密库的灵活性。使用简单且易于扩展,只包含确保最佳安全性的最小复杂性。PHP-Crypt 使交换或集成新的加密库变得轻而易举!

  • PHP-Crypt 支持开箱即用的 认证加密(使用 SodiumOpenSSL

  • PHP-Crypt 易于扩展 – 只需将您最喜欢的加密库的实现放入 src/lib 目录中,并在实例化 PHP-Crypt 时调用 new Crypt('<yourClass>')。这再简单不过了!在此过程中,您可以提交一个PR

先决条件

  • PHP >= 5.6
  • 如果使用的是PHP < 7.2,请安装libsodium和sodium PHP扩展以启用对Sodium库的完全支持。
  • 如果使用的是PHP >= 7.2,请通过PECL安装Mcrypt PHP扩展以启用对Mcrypt的支持。注意:强烈不建议在生产环境中使用Mcrypt,并且仅应用于向后兼容。
  • Composer

安装

PHP-Crypt 支持通过 composergit submodule 在您的PHP应用程序中进行安装。

Composer: composer require benjaminstout/php-crypt
Git: git add submodule git@github.com:stoutput/php-crypt.git <path/to/folder> && composer update -d <path/to/folder>

use BenjaminStout\PHPCrypt\Crypt;
require_once '<path/to/folder>/src/Crypt.php';

入门指南

实例化一个 PHP-Crypt 的新实例:

$this->Crypt = new Crypt('<library>', '<key>');

其中:
<library> 是要使用的加密库(Sodium [默认],OpenSSL,Mcrypt,...)
<key> 是用于加密的可选密钥字符串。它必须符合库的密钥要求。

加密字符串:

$this->Crypt->encrypt('string');

解密密文:

$this->Crypt->decrypt('eNcRyPtEd');

加密密钥

如果在实例化时未指定加密密钥,PHP-Crypt 将首先在 Config::$config['keyPath<library>'] 中查找现有密钥,然后是 Config::$config['keyPath']。如果没有找到现有密钥,PHP-Crypt 将自动生成并保存一个合适的随机密钥供库使用。

出于安全考虑,默认情况下密钥存储在WWW_ROOT之外文件系统中。现有的密钥文件应该是小写,以.key结尾,并以所属库命名。例如:keyPathOpenssl => 'openssl.key'

示例:

  • 允许PHP-Crypt为您生成密钥而无需任何预存的密钥文件

    $this->Crypt = new Crypt('Openssl');

    自动将生成的随机密钥保存到Config::$config['keyPath']下的openssl.key

  • 而传递一个密钥给构造函数将创建一个替代的.custom.key文件(以避免覆盖现有的密钥)。例如

    $this->Crypt = new Crypt('Openssl', 'KeY123');

    Config::$config['keyPath']下创建一个名为openssl.custom.key的文件,内容为KeY123

  • 如果您希望为库指定一个唯一的密钥路径,在实例化时传递一个值给'keyPath'

    $this->Crypt = new Crypt('Openssl', [
        'keyPathOpenssl' => '/path/to/openssl.key',
    ]);

    或者,之后设置它

    Crypt::setKeyPath('Openssl', '/path/to/openssl.key');

测试

运行composer update --dev以在项目中安装phpunit,然后从项目根目录运行vendor/bin/phpunit

贡献

欢迎和鼓励所有贡献!通过创建一个问题来开始讨论,然后fork此仓库,提交您的代码,并通过提交PR

重要说明

强烈不建议使用Mcrypt库,PHP-Crypt仅为了向后兼容而包含。底层库(libmcrypt)自2007年以来已被遗弃,包含许多不受欢迎的行为和可能的安全漏洞。相反,请使用Sodium或OpenSSL。

许可

本项目遵循MIT许可条款。