ahsankhatri/cryptolib-php

一个基于密钥定义的随机密码生成器进行加密或解密的库。

v2.0.0 2023-12-19 05:54 UTC

This package is auto-updated.

Last update: 2024-09-19 07:43:53 UTC


README

Latest Version on Packagist tests Total Downloads License

这是一个用于在PHP中用密钥(密码将根据您的参数生成)加密数据的库。

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

特性

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

安装

您可以通过composer安装此包

composer require ahsankhatri/cryptolib-php

依赖项

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

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

使用方法

使用随机IV

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

$encryption = new \MrShan0\CryptoLib\CryptoLib();

$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 \MrShan0\CryptoLib\CryptoLib();
$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

变更日志

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

贡献

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

安全性

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

鸣谢

许可证

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