tq/shamir

该软件包已被废弃且不再维护。作者建议使用teqneers/shamir软件包。

这是PHP中Shamir共享密钥的实现。它允许您使用PHP类或CLI界面创建共享密钥。

2.0.0 2023-12-21 15:44 UTC

This package is auto-updated.

Last update: 2023-12-22 13:14:00 UTC


README

构建状态:Scrutinizer Code Quality Code Coverage Code Climate

项目信息:License GitHub code size in bytes

这是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许可证 - 详细信息请参阅许可证文件