예제 #1
0
파일: Program.cs 프로젝트: Tlalok/CandPCI
        private static void TestMessage()
        {
            RabinCryptosystem rabin = new RabinCryptosystem(new PrimeNumberGenerator(new MillerRabinTest()));
            //36157
            var privateKey = rabin.GeneratePrivateKey();
            var publicKey = rabin.GeneratePublicKey(privateKey);
            var message = Encoding.Unicode.GetBytes(
            @"Конфигурация является такой же важной частью как и код, особенно в крупных проектах. Но часто отношение к ней, как к второсортному артефакту разработки и эксплуатации ПО. Плохо если конфигурация не проходит тот же полный цикл, что и ПО. Про аудит изменений и версионирование забывают, либо проводят не самым подходящим для этого инструментарием.
Я видел много проектов, где конфигурация подкладывается в файловую систему в виде properties/json/xml файлов с непостижимыми уму переоределениями в момент загрузки. И что же на самом деле использует приложение становится ясно только после просмотра лог файлов компонента либо во время отладки.
Скрипт для автоустановки своего Git репозитария можете найти в разделе «Конфигурация в собственном git репозитарии».
При выборе git можно использовать весь тот инструментарий, что используется в разработке. Делать ревью, сравнивать конфигурацию, поддерживать разные ветки конфигурации, ссылаться на теги, пользоваться как визуальными инструментами так и инструментарием в командной строке.
Чтобы воспользоваться всем этим мощным арсеналом нам надо лишь научиться считывать конфигурацию из git репозитария.");
            var encrypted = rabin.Encrypt(message, publicKey);
            var decrypted = rabin.Decrypt(encrypted, privateKey, publicKey);
            Console.WriteLine("Source message = {0}", Encoding.Unicode.GetString(message));
            Console.WriteLine();

            Console.WriteLine("Decrepted message = {0}", Encoding.Unicode.GetString(decrypted));
            Console.WriteLine();
        }
예제 #2
0
파일: Program.cs 프로젝트: Tlalok/CandPCI
        private static void TestOneByte()
        {
            RabinCryptosystem rabin = new RabinCryptosystem(new PrimeNumberGenerator(new MillerRabinTest()));
             //36157
            var privateKey = new PrivateKey { p = 3163, q = 3167 };
            var publicKey = new PublicKey { n = 10017221, b = 4562931 };
            var message = new byte[] { 61 };

            var encrypted = rabin.Encrypt(message, publicKey);
            var decrypted = rabin.Decrypt(encrypted, privateKey, publicKey);

            Console.Write("encrypted = ");
            for (var i = 0; i < encrypted.Length; i++)
                Console.Write("{0} ", encrypted[i]);
            Console.WriteLine();

            Console.Write("decrypted = ");
            for (var i = 0; i < decrypted.Length; i++)
                Console.Write("{0} ", decrypted[i]);
            Console.WriteLine();

        }
예제 #3
0
파일: Program.cs 프로젝트: Tlalok/CandPCI
        private static void TestFile(string sourceFile, string encryptedFile, string decryptedFile)
        {
            RabinCryptosystem rabin = new RabinCryptosystem(new PrimeNumberGenerator(new MillerRabinTest()));
            Stopwatch watch = new Stopwatch();
            var message = File.ReadAllBytes(sourceFile);

            watch.Start();
            var privateKey = rabin.GeneratePrivateKey();
            var publicKey = rabin.GeneratePublicKey(privateKey);
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(File.OpenWrite(sourceFile + ".private"), privateKey);
            bf.Serialize(File.OpenWrite(sourceFile + ".public"), publicKey);
            watch.Stop();
            Console.WriteLine("Keys generation time = {0}", watch.ElapsedMilliseconds);

            watch.Reset();
            watch.Start();
            var encrypted = rabin.Encrypt(message, publicKey);
            watch.Stop();
            File.WriteAllBytes(encryptedFile, encrypted);
            Console.WriteLine("Encryption time = {0}", watch.ElapsedMilliseconds);
            encrypted = File.ReadAllBytes(encryptedFile);

            watch.Reset();
            watch.Start();
            var decrypted = rabin.Decrypt(encrypted, privateKey, publicKey);
            watch.Stop();
            Console.WriteLine("Decryption time = {0}", watch.ElapsedMilliseconds);

            File.WriteAllBytes(decryptedFile, decrypted);
        }