2个版本
0.1.1 | 2020年4月2日 |
---|---|
0.1.0 | 2020年4月2日 |
#1488 in 数学
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