예제 #1
0
        public void FinitePointToString()
        {
            var split = new ShamirsSecretSharing <BigInteger>(new ExtendedEuclideanAlgorithm <BigInteger>());
            FinitePoint <BigInteger> fp = split.MakeShares(3, 7, 500).First();
            string s1 = fp.ToString();
            string s2 = new FinitePoint <BigInteger>(s1).ToString();

            Assert.Equal(s1, s2);
        }
예제 #2
0
        public static string combineSharedSecrets(List <string> secrets)
        {
            List <FinitePoint <BigInteger> > points = new List <FinitePoint <BigInteger> >();

            foreach (var secret in secrets)
            {
                points.Add(FinitePoint <BigInteger> .Parse(secret));
            }

            var combine = new ShamirsSecretSharing <BigInteger>(gcd);

            return(combine.Reconstruction(points.ToArray()).ToString());
        }