예제 #1
0
        static void Main(string[] args)
        {
            BigInteger p = new BigInteger("6277101735386680763835789423207666416083908700390324961279", 10);
            BigInteger a = new BigInteger("-3", 10);
            BigInteger b = new BigInteger("64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1", 16);

            byte[]     xG = fromHexStringToByte("03188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012");
            BigInteger n  = new BigInteger("ffffffffffffffffffffffff99def836146bc9b1b4d22831", 16);

            CDS        DS   = new CDS(p, a, b, n, xG);
            BigInteger d    = DS.genPrivateKey(192);
            CECPoint   Q    = DS.genPublicKey(d);
            CStribog   hash = new CStribog(256);

            /*
             * byte[] H = hash.GetHash(Encoding.Default.GetBytes("Message"));
             * string sign = DS.genDS(H, d);
             *
             * byte[] H2 = hash.GetHash(Encoding.Default.GetBytes("message"));
             * string sign2 = DS.genDS(H2, d);
             */

            Console.WriteLine("Выберите файл содержащий сообщение: ");
            String path    = Console.ReadLine();
            String message = readFile(path);

            byte[] H    = hash.GetHash(Encoding.Default.GetBytes(message));
            string sign = DS.genDS(H, d);

            Console.WriteLine("Сообщение \"{0}\" имеет следующую ЭЦП: {1}", message, sign);
            Console.WriteLine("Выберите файл для сохранение ЭЦП: ");
            path = Console.ReadLine();
            writeFile(path, sign);

            Console.WriteLine("Выберите файл для верификации сообщения: ");
            path = Console.ReadLine();
            String message2 = readFile(path);

            byte[] H2 = hash.GetHash(Encoding.Default.GetBytes(message2));
            Console.WriteLine("Выберите файл содержащий цифровую подпись: ");
            path = Console.ReadLine();
            string signVer = readFile(path);
            //string sign2 = DS.genDS(H2, d);

            bool result = DS.verifDS(H2, signVer, Q);

            if (result)
            {
                System.Console.WriteLine("Верификация прошла успешно. Цифровая подпись верна.");
            }
            else
            {
                System.Console.WriteLine("Верификация не прошла! Цифровая подпись не верна.");
            }

            System.Console.ReadLine();
        }
예제 #2
0
        static void Main(string[] args)
        {
            BigInteger p = new BigInteger("6277101735386680763835789423207666416083908700390324961279", 10);
            BigInteger a = new BigInteger("-3", 10);
            BigInteger b = new BigInteger("64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1", 16);
            byte[] xG = fromHexStringToByte("03188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012");
            BigInteger n = new BigInteger("ffffffffffffffffffffffff99def836146bc9b1b4d22831", 16);
            
            CDS DS = new CDS(p, a, b, n, xG);
            BigInteger d = DS.genPrivateKey(192);
            CECPoint Q = DS.genPublicKey(d);
            CStribog hash = new CStribog(256);
            /*
            byte[] H = hash.GetHash(Encoding.Default.GetBytes("Message"));
            string sign = DS.genDS(H, d);

            byte[] H2 = hash.GetHash(Encoding.Default.GetBytes("message"));
            string sign2 = DS.genDS(H2, d);
            */

            Console.WriteLine("Выберите файл содержащий сообщение: ");
            String path=Console.ReadLine();
            String message = readFile(path);
            byte[] H = hash.GetHash(Encoding.Default.GetBytes(message));
            string sign = DS.genDS(H, d);
            Console.WriteLine("Сообщение \"{0}\" имеет следующую ЭЦП: {1}", message, sign);
            Console.WriteLine("Выберите файл для сохранение ЭЦП: ");
            path = Console.ReadLine();
            writeFile(path, sign);

            Console.WriteLine("Выберите файл для верификации сообщения: ");
            path = Console.ReadLine();
            String message2 = readFile(path);
            byte[] H2 = hash.GetHash(Encoding.Default.GetBytes(message2));
            Console.WriteLine("Выберите файл содержащий цифровую подпись: ");
            path = Console.ReadLine();
            string signVer= readFile(path);
            //string sign2 = DS.genDS(H2, d);

            bool result = DS.verifDS(H2, signVer, Q);

            if (result)
                System.Console.WriteLine("Верификация прошла успешно. Цифровая подпись верна.");
            else
                System.Console.WriteLine("Верификация не прошла! Цифровая подпись не верна.");

            System.Console.ReadLine();
        }