stymiee / php-simple-encryption
PHP Simple Encryption 库旨在简化数据加密和解密的过程,同时确保遵循最佳实践。默认情况下,它使用安全的加密算法并生成一个密码学上强大的初始化向量,因此开发者不需要成为专家
Requires
- php: >=7.2.0
- ext-openssl: *
Requires (Dev)
- phpmd/phpmd: @stable
- phpunit/phpunit: ^8
- squizlabs/php_codesniffer: @stable
README
PHP Simple Encryption (php-simple-encryption)
一个PHP库,可以轻松实现文本的加密和解密。
需求
- PHP 7.2+
- OpenSSL PHP 扩展
安装
如果您使用Composer来管理项目的依赖关系,请将 stymiee/php-simple-encryption
添加到您的项目 composer.json
文件中。
以下是一个包含PHP Simple Encryption依赖关系的最小 composer.json
文件示例
{
"require": {
"stymiee/php-simple-encryption": "^1"
}
}
基本用法
要获取有关此库的更详细介绍,请访问我的博客上的PHP Simple Encryption教程。
require('./vendor/autoload.php'); use Encryption\Encryption; use Encryption\Exception\EncryptionException; $text = 'The quick brown fox jumps over the lazy dog'; $key = 'secretkey'; try { $encryption = Encryption::getEncryptionObject(); $iv = $encryption->generateIv(); $encryptedText = $encryption->encrypt($text, $key, $iv); $decryptedText = $encryption->decrypt($encryptedText, $key, $iv); printf('Cipher : %s%s', $encryption->getName(), PHP_EOL); printf('Encrypted: %s%s', $encryptedText, PHP_EOL); printf('Decrypted: %s%s', $decryptedText, PHP_EOL); printf('Version : %s%s', Encryption::VERSION, PHP_EOL); } catch (EncryptionException $e) { echo $e; }
输出
Cipher : AES-256-CBC
Encrypted: lierDqV4Qo3Cm87YU01K+YnQsDGrFsYypjHJVZaagqfLFg7xb2T7b9qfqb4NcoIGcTzqvQbOx72AVgbuRFxqgg==
Decrypted: The quick brown fox jumps over the lazy dog
Version : 1
如果出现以下情况,可能会抛出异常:
- 尝试使用无效/不受支持的加密方式(《Encryption\Exception\InvalidCipherException》)
- 尝试使用OpenSSL中有但尚未实现的加密方式(《Encryption\Exception\CipherNotImplementedException》)
- 无法生成初始化向量(《Encryption\Exception\GenerateIvException》)。
- 无法加密数据(《Encryption\Exception\EncryptException》)。
- 无法解密数据(《Encryption\Exception\DecryptException》)。
支持的加密方式
PHP Simple Encryption 库当前默认使用 AES-256-CBC
。这可能会在未来版本中更改,并且当发生这种情况时,将导致主要版本号升级。您可以通过调用 Encryption::VERSION
来检查您的库版本。该库当前版本为 "1"。
要确定您正在使用哪种加密方式,可以调用您的加密对象的 getName()
方法。
$encryption = Encryption::getEncryptionObject(); $cipherName = $encryption->getName(); // AES-256-CBC
要获取您的系统和此库支持的加密方式的列表,可以调用 Encryption::listAvailableCiphers()
以接收可用加密方式的数组。此列表是您的系统安装的OpenSSL版本中的可用加密方式和此库支持的加密方式的交集。
支持的加密方式总数 139
默认加密方式: AES-256-CBC(版本 1)
注意
如果要加密的文本包含尾随的空字符,则解密这些值时将删除这些空字符。
某些加密方式可能不适用于您的PHP版本。您的PHP版本(及其openssl扩展)越新,可用的加密方式就越多。
支持
如果您需要使用此库的帮助,请先查看包含在此包中的 HELP.md 文件。它包括常见问题和解决方案。
如果您需要额外帮助,您可以在Stack Overflow找到我。在您提出有关此库使用的问题时,请务必使用PHP和encryption标签。确保您遵循他们的提问指南,因为问得不好的问题将被关闭,我将无法协助您。
一个好的问题应包括以下所有内容
- 问题描述(您要做什么?您期望得到什么结果?您实际得到什么结果?)
- 您正在使用的代码(只发布相关代码)
- 您的未加密文本
- 您正在使用的密钥
- 您正在使用的IV
- 您的方法调用输出
- 您遇到的任何错误信息
请不要在Stack Overflow上报告错误。错误可以在这里报告这里。