static void gen_keypair()
        {
            key = KeyGenerator.GenerateKey(polynomsCount * 16);
            var byte_key = KeyGenerator.GenerateDoubleBytesKey(key);
            var hexKey   = KeyGenerator.GetHexKey(byte_key);

            var key_variable = Encoding.ASCII.GetBytes(hexKey);

            RsaKeyPairGenerator rsaKeyPairGnr = new RsaKeyPairGenerator();

            rsaKeyPairGnr.Init(new Org.BouncyCastle.Crypto.KeyGenerationParameters(new SecureRandom(key_variable), 512));
            Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair keyPair = rsaKeyPairGnr.GenerateKeyPair();


            P = (RsaKeyParameters)keyPair.Public;
            S = (RsaKeyParameters)keyPair.Private;


            print_key(hexKey);
        }
Example #2
0
        public static void Main()
        {
            Console.WriteLine("1: Split\n2: Combine");
            var choice = Console.ReadLine();

            if (choice == "1")
            {
                Console.WriteLine("Players: ");
                var playerStr = Console.ReadLine();

                Console.WriteLine("Required: ");
                var requiredStr = Console.ReadLine();

                Console.WriteLine("Message:");
                var message = Console.ReadLine();

                var players  = int.Parse(playerStr);
                var required = int.Parse(requiredStr);

                var polynomsCount = 3;

                var byteKey = KeyGenerator.GenerateKey(polynomsCount * 16);
                var key     = KeyGenerator.GenerateDoubleBytesKey(byteKey);
                var hexKey  = KeyGenerator.GetHexKey(key);

                var encrypted = Encryption.Encrypt(message, hexKey);

                Console.WriteLine("\nEncrypted message:\n{0}", encrypted);

                Console.WriteLine("\nShares: ");

                var splitted = SharesManager.SplitKey(key, players, required);
                for (var i = 0; i < splitted.Length; i++)
                {
                    Console.WriteLine(splitted[i]);
                }
                Console.WriteLine();
            }
            else if (choice == "2")
            {
                Console.WriteLine("Encrypted message: ");
                var message = Console.ReadLine();

                Console.WriteLine("Number of shares: ");
                var sharesCountStr = Console.ReadLine();
                var sharesCount    = int.Parse(sharesCountStr);


                var shares = new string[sharesCount];

                for (var i = 0; i < sharesCount; i++)
                {
                    Console.WriteLine("Share {0}:", i + 1);
                    shares[i] = Console.ReadLine();
                }

                var generatedKey = SharesManager.CombineKey(shares);
                var hexKey       = KeyGenerator.GetHexKey(generatedKey);

                var decrypted = Encryption.Decrypt(message, hexKey);
                Console.WriteLine("\nDecrypted message:");
                Console.WriteLine(decrypted);
                Console.WriteLine();
            }

            var a = Console.ReadLine();
        }