ericledberg/php-encryption

一个PHP类,使用OpenSSL AES CBC加密提供加密功能

v0.2alpha 2024-05-02 14:54 UTC

This package is auto-updated.

Last update: 2024-10-02 16:15:46 UTC


README

PHP-Encryption是一个类,使用OpenSSL库提供对称加密和解密功能。它使用高级加密标准(AES)算法在密文块链(CBC)模式下进行安全数据加密。

记住,保持加密密钥的安全和隐私对于维护数据安全至关重要。这项工作留给用户应用程序。

功能

  • 能够从受保护的".env"文件导入加密密钥或在运行时由应用程序设置
  • 使用AES-256-CBC加密对数据进行强加密
  • 可选:对原始加密数据计算HMAC_HASH
  • 可选:将加密数据和其HMAC_HASH结合,并使用KEY2再次加密
  • 可选:将原始加密数据与其HMAC_HASH进行比较,以验证其未被篡改

安装

使用以下命令通过Composer安装PHP-Encryption

composer require ericledberg/PHP-Encryption

或者,您可以手动下载cksEncryption.php文件并将其包含在您的PHP项目中。

可选:初始化.ENV密钥文件

  • 在Composer的vendor/php-encryption中找到Example.env
  • 将示例复制到:cp Example.env .env
  • 对于生产环境,生成新的密钥并更新.env
  • 更新.env权限以限制访问
    • sudo chown root .env
    • sudo chgrp apache2 .env
    • sudo chmod 440 .env

示例:使用Composer和.ENV存储密钥

以下是如何在PHP代码中使用PHP-Encryption的示例。

ericledberg/php-encryption

// Alter path to where test.php script resides
$autoloader = require __DIR__ . '/vendor/autoload.php';

$aOptions = array();
$aOptions['ENVKEYFILE'] = __DIR__ . "/.env";

$objENC = new \clsEncryption\clsEncryption($aOptions);
echo "<h2>objENC() created</h2>";

// Encrypt data
$data = 'Hello, world!';
$encryptedData = $objENC->encrypt($data);

// Decrypt data
$decryptedData = $objENC->decrypt($encryptedData);

// Display results
echo "Original data: $data\n";
echo "Encrypted data: $encryptedData\n";
echo "Decrypted data: $decryptedData\n";

示例:简单要求类

// --------------------------------------------
// encryption
// APP does not have knowledge about about internal operations of clsEncryption, including keys
// --------------------------------------------
$aOptions = array();
$aOptions['ENVKEYFILE'] = __DIR__ . $config['folderSep'] . ".envENCRYPTION";
require_once('./clsEncryption.php');
$objENC = new \clsEncryption\clsEncryption($aOptions);

// Optionally execute built-in tests...
//$objENC->ExecuteTests();
//exit;

// Encrypt data
$data = 'Hello, world!';
$encryptedData = $objENC->encrypt($data);

// Decrypt data
$decryptedData = $objENC->decrypt($encryptedData);

// Display results
echo "Original data: $data\n";
echo "Encrypted data: $encryptedData\n";
echo "Decrypted data: $decryptedData\n";

安全考虑

  • 正确管理加密密钥,并确保其保密性和安全性,防止未经授权的访问。
  • 使用适当的访问控制安全地存储加密数据和加密密钥。
  • 验证和清理输入数据以防止潜在的安全漏洞。
  • 定期审计和审查实现以识别安全风险。
  • 确保符合适用的数据保护法律和行业规定,尤其是在处理敏感数据时。

贡献

欢迎为PHP-Encryption做出贡献!请向GitHub存储库提交问题和拉取请求:https://github.com/ericledberg/PHP-Encryption

许可

PHP-Encryption在MIT许可下发布,允许个人和商业使用。有关详细信息,请参阅LICENSE文件。

鸣谢

PHP-Encryption由ericledberg创建,并受到各种PHP加密库以及加密和密钥管理最佳实践的启发。