使用OpenSSL加密/解密机密的PHP库。

1.1 2021-07-04 10:15 UTC

This package is auto-updated.

Last update: 2024-09-04 17:09:29 UTC


README

Latest Stable Version License CI Workflow Code CoverageQuality Score Total Downloads

Shh! 🤫

Shh!是一个简单的库,用于处理机密。它帮助您生成密钥对,加密/解密负载,以安全的方式存储机密。

关于这方面的完整背景,请参阅Symfony Bundle文档

安装

composer require bentools/shh:^1.0

使用方法

生成密钥

use BenTools\Shh\Shh;

[$publicKey, $privateKey] = Shh::generateKeyPair();

默认情况下,使用长度为4096位的sha512算法。

带有密码短语和不同配置的示例

use BenTools\Shh\Shh;

[$publicKey, $privateKey] = Shh::generateKeyPair('Some passphrase', ['private_key_bits' => 512, 'digest_alg' => 'sha256']);

更改密码短语

您可以更改现有密钥的密码短语

use BenTools\Shh\Shh;

[$publicKey, $privateKey] = Shh::generateKeyPair();
$privateKey = Shh::changePassphrase($privateKey, null, 'now I have a passphrase');

这会生成一个新的私钥。

公钥保持不变,现有的机密仍然可以用新的密码短语进行解码。

加密/解密机密

需要公钥来加密机密,而解码它们则需要公钥和私钥。

use BenTools\Shh\Shh;

$shh = new Shh($publicKey, $privateKey);
$encoded = $shh->encrypt('foo');
$decoded = $shh->decrypt($encoded);

负载使用base64进行序列化/反序列化。

机密存储

它允许您存储加密的机密。一旦私钥未发布,您可以安全地发布包含机密的文件。

只有私钥的所有者(以及其关联的密码短语,如果有的话)才能解密其中的机密。

use BenTools\Shh\SecretStorage\JsonFileSecretStorage;
use BenTools\Shh\Shh;
[$publicKey, $privateKey] = Shh::generateKeyPair('Some passphrase', ['private_key_bits' => 512, 'digest_alg' => 'sha256']);

$shh = new Shh($publicKey, $privateKey);
$storage = new JsonFileSecretStorage($shh, './secrets.json');
$storage->store('some-secret');
$storage->has('some-secret');
$storage->get('some-secret'); // Reveal
$storage->getKeys(); // List known secrets

测试

./vendor/bin/phpunit

许可协议

MIT