A purely functional (as in, working) and likely inefficient implementation of Shamir Secret Sharing in Rust
Not intended to be used in production code.
``` let mut rand = SmallRng::seedfromu64(123u64); let secret: u8 = 23; // The secret to be split into shares let sharesrequired = 3; // The number of shares required to reconstruct the secret let sharestocreate = 3; // The number of shares to create, can be greater than the required let bitsizeco: usize = rand.genrange(32, 65); // The number of bits for the generated coefficients let primebits: usize = rand.genrange(bitsizeco + 128, 257); // The number of bits for the prime let mut prime: BigInt = rand.genprime(primebits).into(); // The prime number used for finite field while prime < BigUint::from(secret) { // In case the prime is less than the secret, generate new ones until one is greater prime = rand.genprime(primebits).into(); }
let shares: Vec
asserteq!(secret, secretrecon); ```