bentools / shh
使用OpenSSL加密/解密机密的PHP库。
1.1
2021-07-04 10:15 UTC
Requires
- php: >=7.3
- ext-json: *
- ext-openssl: *
Requires (Dev)
- bentools/cartesian-product: ^1.3
- php-coveralls/php-coveralls: ~2.1
- phpstan/phpstan: ~0.12
- phpunit/phpunit: ~8.0|~9.0
- squizlabs/php_codesniffer: ~3.0
- symfony/var-dumper: ~4.0|~5.0
- thecodingmachine/safe: ^1.0
Suggests
- bentools/shh-bundle: Integrate Shh! into your Symfony application.
This package is auto-updated.
Last update: 2024-09-04 17:09:29 UTC
README
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