kovltsov / justencrypt
Requires
- bitwasp/buffertools: ^0.5.0
- paragonie/constant_time_encoding: ^1.0|^2.0
- paragonie/random_compat: ^1.0|^2.0
- spomky-labs/php-aes-gcm: *
Requires (Dev)
- phpunit/phpunit: ^4.5|^5.0
- squizlabs/php_codesniffer: ^2.0
This package is auto-updated.
Last update: 2024-09-24 04:23:06 UTC
README
JustEncrypt PHP 库
===========================
PHP 支持
此库支持 PHP 版本 5.6 至 7.1。强烈建议使用 PHP 7.1,因为 OpenSSL 扩展现在支持我们使用的算法。否则,您将回退到原生 PHP 中速度较慢的实现。
用法
密钥派生
以下示例展示了从密码/盐/迭代中简单派生密钥 简单派生示例
KeyDerivation::generateSalt()
将返回使用当前默认值的盐。 Encryption::encrypt
将使用库默认值生成上述盐/迭代
加密
加密 blob 是 saltLen (uint8) || salt || iv || ct || tag
的连接。序列化的参数允许我们在只知道密码的任何机器上解密。
Encryption::encrypt 返回一个 EncryptedBlob,它封装了密钥派生数据和明文细节。它还公开了针对明文的有用方法
$blob->getBinary()
- 返回加密 blob 的原始二进制数据,用于 base64 等。$blob->getMnemonic()
- 返回加密助记词(见下文)$blob->getBuffer()
- 返回一个缓冲区,对于转换为十六进制等很有用
加密助记词
为了使加密结果易于阅读(因此更容易记录),可以将它编码为助记词。我们使用比特币 BIP39 编码熵到助记词的方式,但忽略 BIP39 最初具有的(弱)密码保护。我们还确保数据正确填充。
$encrypted->getMnemonic()
调用 EncryptedMnemonic
类来生成 加密助记词示例
选择迭代次数
默认迭代次数为 justencrypt.KeyDerivation.defaultIterations
,设置为 35000,这是一个在使用密码时应足够安全的数字。
如果您没有传递 iterations
参数,它将默认为此值。
如果您使用 CSPRNG 生成的随机字节字符串作为密码进行加密,则可以使用相同的代码,但在那种情况下将迭代次数设置为 1 是安全的,因为没有必要拉伸密码。
在这种情况下,您可以使用 justencrypt.KeyDerivation.subkeyIterations
来清楚地说明您的意图。
此类用法在 此示例 中进行了演示
开发/贡献
有关贡献的详细信息,请参阅 CONTRIBUTING.md
许可
JustEncrypt 在 MIT 许可证的条款下发布。有关更多信息,请参阅 LICENCE.md 或 https://open-source.org.cn/licenses/MIT。