tq / shamir
2.0.0
2023-12-21 15:44 UTC
Requires
- php: >=8.1
- ext-bcmath: *
- symfony/console: ^5.0 || ^6.0
Requires (Dev)
- phpunit/phpunit: ^10.0
- roave/security-advisories: dev-master
- scrutinizer/ocular: dev-master
Suggests
- ext-openssl: For using its random generator instead of PHP one
This package is auto-updated.
Last update: 2023-12-22 13:14:00 UTC
README
这是PHP中Shamir共享密钥的实现。它允许您使用PHP类或CLI界面创建共享密钥。
该加密算法由著名的Adi Shamir创建,他还为Rivest-Shamir-Adleman加密系统(RSA)提供了他的名字。共享密钥算法允许将一个密钥分成多个部分(称为份额)。每个部分可以分发给个人或组织。这个算法的优点是,需要一些或全部份额来重建密钥(称为阈值)。关于安全地共享密钥最重要的要求是,它符合以下要求
- 泄露一个份额不会向攻击者提供更多线索
- 需要预定义数量的份额来获得密钥
- 除了一个之外,知道所有人都不如不知道
- 结合的份额与密钥本身的长度相同
此实现可以处理超过256个份额,并以压缩但可读的方式编码结果。
使用方法
# bin/shamir.php Shamir's Shared Secret CLI 2.0.0 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: help Displays help for a command list Lists commands shamir shamir:recover Recover a shared secret shamir:share Create a shared secret
CLI示例
# bin/shamir.php shamir:share The secret to share: Share my secret Number of shared secrets to create [3]: Number of shared secrets required [2]: 102014%5g0m1p21485434261-3t215p3k3+ 102022i2v4o0q1.1*223m3p1a521:2;4t5b 102035o012;5e1q5i4w3-4%0p0x1u08060; # bin/shamir.php shamir:recover Shared secret [empty to stop]: 102014%5g0m1p21485434261-3t215p3k3+ Shared secret [empty to stop]: 102035o012;5e1q5i4w3-4%0p0x1u08060; Shared secret [empty to stop]: Share my secret # bin/shamir.php shamir:share "Share my secret" 10201241j1x042l0m1j3n530c16123m1w3r 102022f0o1e3g2v0c0j4f3w3v015r4k184s 102032q5g0-0+2+0256572g1i4s4k5i0t5t # echo -n "Share my secret" | bin/shamir.php shamir:share 102014k3:4:371u0i042i0p343t1i0h1l55 102021f5h1,3z14043l250i3s520r3*0v1* 102033*194n4i0n5m161,0b470x5n1z5s4l # bin/shamir.php shamir:share -f path/to/secretFile 10201010-2p4+1:1c4947512b2-194,2,4* 102023+582#1q1k1,0c5s3s1*3o091i3i1q 10203243y3g3#122h221h2a1s484+3v3%3* # bin/shamir.php shamir:recover "10201241j1x042l0m1j3n530c16123m1w3r" "102032q5g0-0+2+0256572g1i4s4k5i0t5t" Share my secret # bin/shamir.php shamir:share -s 4 -t 3 "Share my secret" 10301043625274u011,0910183+0.112e2* 103021f0c2t5f1k3s494w1;221x4%3o1k0a 103035q563y0t40043:4.3e571j3e4g5g07 103041i0r5k5a0+0:0y0l5f4.2%1n3m2s2x # bin/shamir.php shamir:recover "10301043625274u011,0910183+0.112e2*" "103035q563y0t40043:4.3e571j3e4g5g07" "103041i0r5k5a0+0:0y0l5f4.2%1n3m2s2x" Share my secret
PHP示例
#!/usr/bin/env php <?php require_once __DIR__ . '/../vendor/autoload.php'; use TQ\Shamir\Secret; $shares = Secret::share('Shamir\'s Shared Secret Implementation in PHP', 5, 2); var_dump($shares); var_dump(Secret::recover(array_slice($shares, 0, 2))); var_dump(Secret::recover(array_slice($shares, 1, 3)));
要求
PHP 8.1.0或更高版本
集成
Tiki Wiki CMS Groupware: https://doc.tiki.org/Shared-Secret
许可证
PHP中的Shamir的秘密共享协议遵循MIT许可证 - 详细信息请参阅许可证文件