kangyasin/crypt-aes-php

一个基于密钥(根据您设置的参数生成密码)加密或解密的库。

dev-main 2022-11-16 15:22 UTC

This package is auto-updated.

Last update: 2024-09-16 19:08:38 UTC


README

Latest Version on Packagist Total Downloads License

这是PHP中用于使用密钥(密码将根据您设置的参数生成)加密数据的库。

为什么还需要另一个库? 这是为了开发跨平台的AES加密(PHP缺失)在这里。我的主要目标是创建一个库用于 AES-256-CBC,为跨平台AES包贡献PHP包,在有时间的情况下将添加更多功能。

功能

  • 支持随机IV(初始化向量)的加密和解密。随机化对于加密方案实现语义安全至关重要,这是一个属性,即在相同密钥下重复使用方案不会让攻击者推断加密消息各部分之间的关系。
  • 支持使用SHA-256哈希密钥。永远不要使用纯文本作为加密密钥。始终对纯文本密钥进行哈希处理,然后用于加密。AES允许使用256位密钥。使用蛮力破解256位对称密钥需要比128位密钥128倍的计算能力。一种每秒可以检查十亿亿(10^18)个AES密钥的设备,在理论上需要大约3×10^51年才能耗尽256位密钥空间。
  • 自PHP-7以来支持mcrypt已弃用。

安装

您可以通过composer安装此包

composer require kangyasin/crypt-aes-php

依赖

这些绑定需要以下扩展才能正常工作

如果您使用Composer,这些依赖项应自动处理。如果您手动安装,请确保这些扩展可用。

使用方法

使用随机IV

$string     = 'The quick brown fox jumps over to the lazy dog.';
$secretyKey = 'BlVssQKxzAHFAUNZbqvwS+yKw/m';

$encryption = new \Kangyasin\CryptAES\CryptAES();

$cipher  = $encryption->encryptPlainTextWithRandomIV($string, $secretyKey);
echo 'Cipher: ' . $cipher . PHP_EOL;

$plainText = $encryption->decryptCipherTextWithRandomIV($cipher, $secretyKey);
echo 'Decrypted: ' . $plainText . PHP_EOL;

使用生成的IV

$string     = 'The quick brown fox jumps over to the lazy dog.';
$secretyKey = 'BlVssQKxzAHFAUNZbqvwS+yKw/m';

$encryption = new \Kangyasin\CryptAES\CryptAES();
$iv         = $encryption->generateRandomIV();

$cipher = $encryption->encrypt($string, $secretyKey, $iv);
echo 'Cipher: ' . $cipher . PHP_EOL;

$plainText = $encryption->decrypt($cipher, $secretyKey, $iv);
echo 'Decrypted: ' . $plainText . PHP_EOL;

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全

如果您发现任何与安全相关的问题,请通过电子邮件tutorialblogmarine@gmail.com联系,而不是使用问题跟踪器。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件