kovltsov/justencrypt

0.2.1 2019-03-23 11:15 UTC

This package is auto-updated.

Last update: 2024-09-24 04:23:06 UTC


README

JustEncrypt PHP 库

===========================

Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version

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