btccom / justencrypt
Requires
- bitwasp/buffertools: ^0.4.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 not auto-updated.
Last update: 2024-09-10 04:58:13 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。