stymiee/php-simple-encryption

PHP Simple Encryption 库旨在简化数据加密和解密的过程,同时确保遵循最佳实践。默认情况下,它使用安全的加密算法并生成一个密码学上强大的初始化向量,因此开发者不需要成为专家

1.0.7 2021-08-30 13:38 UTC

This package is auto-updated.

Last update: 2024-09-18 18:03:19 UTC


README

Latest Stable Version Total Downloads Build Scrutinizer Code Quality Maintainability License

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找到我。在您提出有关此库使用的问题时,请务必使用PHPencryption标签。确保您遵循他们的提问指南,因为问得不好的问题将被关闭,我将无法协助您。

一个好的问题应包括以下所有内容

  • 问题描述(您要做什么?您期望得到什么结果?您实际得到什么结果?)
  • 您正在使用的代码(只发布相关代码)
  • 您的未加密文本
  • 您正在使用的密钥
  • 您正在使用的IV
  • 您的方法调用输出
  • 您遇到的任何错误信息

请不要在Stack Overflow上报告错误。错误可以在这里报告这里