ericledberg / php-encryption
一个PHP类,使用OpenSSL AES CBC加密提供加密功能
v0.2alpha
2024-05-02 14:54 UTC
Requires
- php: >=7.2.0
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加密库以及加密和密钥管理最佳实践的启发。