Beispiel #1
0
        public static Keys GenerateKeys(EllipticCurve curve)
        {
            var privateKey = RandomBigInteger(curve.Parameters.FieldCharacteristic);
            var publicKey  = curve.Multiply(privateKey, curve.Parameters.BasePoint);

            return(new Keys(privateKey, publicKey));
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            var parameters = ParametersFactory.Secp256k1();
            var EC         = new EllipticCurve(parameters);

            DH.Execute(EC);
        }
Beispiel #3
0
        public static void Execute(EllipticCurve curve)
        {
            var AliceKeys = GenerateKeys(curve);
            var BobKeys   = GenerateKeys(curve);

            Console.WriteLine("\nAlice`s key:\n");
            Console.WriteLine(AliceKeys);
            Console.WriteLine("\nBob`s key\n");
            Console.WriteLine(BobKeys);

            var AliceSecret = curve.Multiply(AliceKeys.Private, BobKeys.Public);
            var BobSecret   = curve.Multiply(BobKeys.Private, AliceKeys.Public);

            Console.WriteLine("\nAlice`s secret:\n");
            Console.WriteLine(AliceSecret);
            Console.WriteLine("\nBob`s secret\n");
            Console.WriteLine(BobSecret);
        }