paragonie / constant_time_encoding
RFC 4648 编码(Base-64、Base-32、Base-16)的恒定时间实现
v3.0.0
2024-05-08 12:36 UTC
Requires
- php: ^8
Requires (Dev)
- phpunit/phpunit: ^9
- vimeo/psalm: ^4|^5
This package is auto-updated.
Last update: 2024-08-25 13:29:18 UTC
README
本库基于 Steve "Sc00bz" Thomas 制作的 恒定时间 base64 实现,旨在提供不通过处理器缓存缺失泄露编码/解码信息的字符编码函数。关于 缓存时间攻击 的更多信息。
我们的分支提供了以下增强功能
- 抵抗
mbstring.func_overload
- 单元测试
- Composer 和 Packagist 就绪
- Base16 编码
- Base32 编码
- 使用
pack()
和unpack()
代替chr()
和ord()
PHP 版本要求
本库的第 3 版应能在 PHP 8 或更高版本上运行。
本库的第 2 版应能在 PHP 7 或更高版本上运行。请参阅 v2.x 分支。
对于 PHP 5 支持,请参阅 v1.x 分支。
如果您打算将此库作为依赖项添加到旨在在 PHP 5 至 8.4 上运行的项目中,请将所需版本设置为 ^1|^2|^3
。
如何安装
composer require paragonie/constant_time_encoding
如何使用
use ParagonIE\ConstantTime\Encoding; // possibly (if applicable): // require 'vendor/autoload.php'; $data = random_bytes(32); echo Encoding::base64Encode($data), "\n"; echo Encoding::base32EncodeUpper($data), "\n"; echo Encoding::base32Encode($data), "\n"; echo Encoding::hexEncode($data), "\n"; echo Encoding::hexEncodeUpper($data), "\n";
示例输出
1VilPkeVqirlPifk5scbzcTTbMT2clp+Zkyv9VFFasE=
2VMKKPSHSWVCVZJ6E7SONRY3ZXCNG3GE6ZZFU7TGJSX7KUKFNLAQ====
2vmkkpshswvcvzj6e7sonry3zxcng3ge6zzfu7tgjsx7kukfnlaq====
d558a53e4795aa2ae53e27e4e6c71bcdc4d36cc4f6725a7e664caff551456ac1
D558A53E4795AA2AE53E27E4E6C71BDCC4D36CC4F6725A7E664CAFF551456AC1
如果您只需要特定变体,可以直接引用所需的类,如下所示
use ParagonIE\ConstantTime\Base64; use ParagonIE\ConstantTime\Base32; $data = random_bytes(32); echo Base64::encode($data), "\n"; echo Base32::encode($data), "\n";
示例输出
1VilPkeVqirlPifk5scbzcTTbMT2clp+Zkyv9VFFasE=
2vmkkpshswvcvzj6e7sonry3zxcng3ge6zzfu7tgjsx7kukfnlaq====
支持合同
如果您的公司在他们的产品或服务中使用此库,您可能对 从 Paragon Initiative Enterprises 购买支持合同 感兴趣。