#secret-sharing #finite-fields #shamir #field #verifiable #prime

shamir_secret_sharing

有限域上的Shamir秘密共享的Rust实现

2个版本

0.1.1 2020年4月2日
0.1.0 2020年4月2日

#1488 in 数学

MIT许可证

11KB
155

ShamirSecretSharing(Rust)

简介

有限域上的Shamir秘密共享的Rust实现。

lib通过利用num_bigint支持大字段特征prime

它不是针对生产目的优化的,可以从几个方面进行改进

  • 在计算模逆时,将extended_euclid_algo替换为机器友好的stein_algo

  • 添加承诺方案以使其可验证

示例

use shamir_secret_sharing::ShamirSecretSharing as SSS;
use num_bigint::{BigInt, BigUint};
use num_bigint::Sign::*;
fn main() {
let sss = SSS {
    threshold: 3,
    share_amount: 5,
    prime: BigInt::parse_bytes(b"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",16).unwrap()
    };

let secret = BigInt::parse_bytes(b"ffffffffffffffffffffffffffffffffffffff", 16).unwrap();

let shares = sss.split(secret.clone());

println!("shares: {:?}", shares);
assert_eq!(secret, sss.recover(&shares[0..sss.threshold as usize]));
}

依赖项

~0.8–1.1MB
~19K SLoC