Beispiel #1
0
        public void DecryptNoKeyTest()
        {
            VigenereCipher myCipher = new VigenereCipher();

            TestCtor(myCipher);
            myCipher.Decrypt(Convert.ToBase64String(Encoding.ASCII.GetBytes(TEST_STR)));
        }
Beispiel #2
0
        void Vigenere(bool encrypt, string inputText, string key)
        {
            if (key.Length == 0)
            {
                string errorMsg;
                if (Language == "cs")
                {
                    errorMsg = "Klíč musí obsahovat alespoň 1 znak.";
                }
                else
                {
                    errorMsg = "Key must contain at least 1 character.";
                }

                throw new Exception(errorMsg);
            }

            inputText = RemoveCzech(inputText);
            InputText = inputText;

            key = NormaliseKey(key);
            Key = key;

            if (encrypt)
            {
                Output = VigenereCipher.Encrypt(inputText, key);
            }
            else
            {
                Output = VigenereCipher.Decrypt(inputText, key);
            }
        }
Beispiel #3
0
        public override DecodedMessage Create()
        {
            ICipher vigenere = new VigenereCipher();
            string  decoded  = vigenere.Decrypt(text, key);

            return(new VigenereDecodedMessage(decoded));
        }
Beispiel #4
0
        /// <summary>
        /// Шифр Виженера и его варианты
        /// </summary>
        public static void VigenereCipherTest()
        {
            Console.WriteLine("3. Шифр Виженера и его варианты");

            // Простой шифр Виженера
            Console.WriteLine("\nПростой шифр Виженера");
            Console.WriteLine("Пример работы программы");
            cryptogram = "N  O  W  I  S  T  H  E";
            Console.WriteLine("Текст: " + cryptogram);
            Console.WriteLine("Ключ: " + "GAH");
            vigenereCipher = new VigenereCipher("GAH");
            encryptText    = vigenereCipher.Encrypt(cryptogram);
            Console.WriteLine("Зашифрованый текст: " + encryptText);
            decryptText = vigenereCipher.Decrypt(encryptText);
            Console.WriteLine("Расшифрованый текст: " + decryptText);

            // Составной шифр Виженера
            Console.WriteLine("\nСоставной шифр Виженера");
            Console.WriteLine("Пример работы программы");
            cryptogram = "My name is Dima";
            Console.WriteLine("Текст: " + cryptogram);
            Console.WriteLine("Ключ: " + string.Join(" ", "azaza", "dima"));
            vigenereCipher = new VigenereCipher("azaza", "dima");
            encryptText    = vigenereCipher.Encrypt(cryptogram);
            Console.WriteLine("Зашифрованый текст: " + encryptText);
            decryptText = vigenereCipher.Decrypt(encryptText);
            Console.WriteLine("Расшифрованый текст: " + decryptText);

            // Шифр Виженера с перемешанным один раз алфавитом
            Console.WriteLine("\nШифр Виженера с перемешанным один раз алфавитом");

            // Прямой вариант
            Console.WriteLine("\nПрямой вариант");
            Console.WriteLine("Пример работы программы");
            cryptogram = "My name is Dima";
            Console.WriteLine("Текст: " + cryptogram);
            Console.WriteLine("Ключ: " + string.Join(" ", "azaza", "dima"));
            vigenereCipher = new VigenereCipher(new[] { "azaza", "dima" }, VigenereCipherType.Straight);
            encryptText    = vigenereCipher.Encrypt(cryptogram);
            Console.WriteLine("Зашифрованый текст: " + encryptText);
            decryptText = vigenereCipher.Decrypt(encryptText);
            Console.WriteLine("Расшифрованый текст: " + decryptText);

            // Обратный вариант
            Console.WriteLine("\nОбратный вариант");
            Console.WriteLine("Пример работы программы");
            cryptogram = "My name is Dima";
            Console.WriteLine("Текст: " + cryptogram);
            var k = new[] { "azaza", "dima" };

            Console.WriteLine("Ключ: " + string.Join(" ", k));
            vigenereCipher = new VigenereCipher(k, VigenereCipherType.Reverse);
            encryptText    = vigenereCipher.Encrypt(cryptogram);
            Console.WriteLine("Зашифрованый текст: " + encryptText);
            decryptText = vigenereCipher.Decrypt(encryptText);
            Console.WriteLine("Расшифрованый текст: " + decryptText);

            Console.WriteLine("\n");
        }
Beispiel #5
0
        public void Vigener_Decrypt()
        {
            VigenereCipher vcipher = new VigenereCipher();

            string[] variables = new string[2];
            int      i         = 0;
            string   key;

            Console.Clear();
            using (StreamReader sr = new StreamReader("Vigener_Enc_Variables.txt"))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    variables[i] = line;
                    i++;
                }
            }

            Console.WriteLine("New or Old key");
            Console.WriteLine("1.Stantard");
            Console.WriteLine("2.New");
            ConsoleKeyInfo button = Console.ReadKey();

            switch (button.Key)
            {
            case ConsoleKey.D1:
                Console.Clear();
                Console.WriteLine("Encrypted: " + variables[0]);
                Console.WriteLine("Decrypted: " + vcipher.Decrypt(variables[1], variables[0]));
                break;

            case ConsoleKey.D2:
                Console.Clear();
                Console.WriteLine("Wprowadz nowy klucz");
                Console.WriteLine("Implement Key");
                key = Console.ReadLine();
                Console.WriteLine("Encrypted: " + variables[0]);
                Console.WriteLine("Decrypted: " + vcipher.Decrypt(variables[0], key));
                break;
            }
            Console.WriteLine("Press Any Button to Back");
            Console.ReadKey();
            Vigener_start();
        }
        private void ButtonDecrypt_Click(object sender, EventArgs e)
        {
            if (textBoxDecryptOriginal.TextLength == 0)
            {
                return;
            }
            var decrypt = chiper.Decrypt(textBoxDecryptOriginal.Text, textBoxKey.Text);

            textBoxDecrypt.Text = decrypt;
        }
        public void VigenereCipherTest()
        {
            int time = 100;

            for (int i = 0; i < time; i++)
            {
                var plain    = RandomHelper.GetCharList();
                var vigenere = new VigenereCipher(RandomHelper.GetVigenereKey());
                Assert.AreEqual(plain, vigenere.Decrypt(vigenere.Encrypt(plain)));
            }
        }
        public void Decrypt_IsCorrect_RusOnly()
        {
            //Arrange
            string expected = "Позови меня с собой я пройду сквозь злые ночи";

            //Act
            string result = VigenereCipher.Decrypt("Явкощн оеэт ф сёёрй о гуобих съхсзу мныф бсча", "ПуГаЧеВа");

            //Assert
            Assert.AreEqual(expected, result);
        }
Beispiel #9
0
        public void DecryptStrTest()
        {
            VigenereCipher myCipher = new VigenereCipher();

            TestCtor(myCipher);
            myCipher.GenKey();
            string encStr = myCipher.Encrypt(TEST_STR);

            TestStrEnc(myCipher, encStr);
            TestStrDec(encStr, myCipher.Decrypt(encStr));
        }
        public void Decrypt_IsCorrect_AllChars()
        {
            //Arrange
            string expected = "поздравляю, ты получил исходный текст!!! в принципе понять, что тут используется шифр виженера не особо трудно, основная подсказка заключается именно в наличии ключа у этого шифра! в данной задаче особый интерес составляет то, как вы реализуете именно сам процесс расшифровки.теперь дело осталось за малым, доделать программу до логического конца, выполнить все условия задания и опубликовать свою работу! молодец, это были достаточно трудные и интересные два с половиной месяца, но впереди нас ждет еще множество открытий, и я надеюсь общих свершений! от лица компании FirstLineSoftware и университета итмо, я рад поздравить тебя с официальным окончанием наших курсов с# для начинающих! мы хотим пожелать успехов в дальнейшем погружении в мир ит и программирования с использованием стека технологий .Net, море терпения и интересных задач!";

            //Act
            string result = VigenereCipher.Decrypt("бщцфаирщри, бл ячъбиуъ щбюэсяёш гфуаа!!! у ъящэячэц ъэюоык, едщ бдв саэацкшгнбяр гчеа кчфцшубп цу ьгщпя вщвсящ, эвэчрысй юяуъщнщхо шпуъликугбз чъцшья с цощъвчщ ъфмес ю лгюлэ ёъяяр! с моыящш шпмоец щаярдш цяэубфъ аьгэотызуа дщ, щръ кй юцкъщчьуац уыхэцэ ясч юбюяуяг ыовзсгюамщщ.внютвж тхыч эядкъябе цн юкъль, мэсццогл шяьфыоэьь ть эщсщжнашанэ ыюцен, уёюяыцчан мах гъъьуун шпмоыъй ч яяьпщъхэтпык яущм бпйэае! чэьюмуд, оээ скфч саьбрвчёыа эядуцйт ъ уьгфщуяяёу фси а эацэтшцэч юпапёи, ьь уъубфмч ысь хффы ужц чьяцнааущ эгъщйаъф, ч п эиттпьк ярвчг гмубзньцы! щб ьшяо шачюрэсч FirstLineSoftware ц ешчтфщацдпбр шыыь, р ыоф ячцсвкрщве бттй а ядсецсцкюкх эшашёрэсуъ якжще увюгщр в# уфн ысвчюпжзцж! чй ёюычъ бщххыибй еьюхечр п хкъмэншёцч юятщвфцшчщ с хчю ъэ ч аачсюсчыщачрняун в шъюьэжцясиьццч агфуо ацаьяычсцы .Net, чэбф ыуюбпьщо с чыдпяхбцйг щктрж!", "скорпион");

            //Assert
            Assert.AreEqual(expected, result);
        }
        public void VigenereDecryptValidInputWithSpace()
        {
            // Arrange
            VigenereCipher cipher   = new VigenereCipher();
            string         input    = "QWErTy aSdfgHujIIkolP Zx CVCVBnnmMM";
            string         expected = "GILhFf qEkvsOkvPYwvbB Gn OCSHIdztCY";
            // Act
            string actual = cipher.Decrypt(input);

            // Assert
            Assert.AreEqual(expected, actual);
        }
Beispiel #12
0
        public void TestDecrypt()
        {
            var vigenereCipher = new VigenereCipher();

            string[] elements = new string[] { "GSPN", "CxpsRe", "biqepr", "mmnrip diqd", "BiQepr Diqd" };

            string key = "key";

            IEnumerable <string> result = vigenereCipher.Decrypt(elements, key);

            Assert.Equal(result, new string[] { "WORD", "StriNg", "result", "cipher test", "ReSult Test" });
        }
Beispiel #13
0
        public void DecryptFileTest()
        {
            VigenereCipher cipher = new VigenereCipher();

            System.IO.File.Exists(ENC_FILE);
            System.IO.File.Exists(DEC_FILE);
            cipher.GenKey();
            cipher.Encrypt(BASE_FILE, ENC_FILE);
            TestFileEnc();
            cipher.Decrypt(ENC_FILE, DEC_FILE);
            TestFileDec();
        }
Beispiel #14
0
        public IActionResult DecryptMessage([FromBody] VigenereModel message)
        {
            var encryptedText = message.Message;
            var alphabet      = message.Alphabet;
            var password      = message.Password;

            VigenereCipher cipher = new VigenereCipher(alphabet);

            message.Message = cipher.Decrypt(encryptedText, password);

            return(Json(message));
        }
        public void VigenereDecryptValidInput()
        {
            // Arrange
            VigenereCipher cipher   = new VigenereCipher();
            string         input    = "ZILJSD";
            string         expected = "PUSZEK";
            // Act
            string actual = cipher.Decrypt(input);

            // Assert
            Assert.AreEqual(expected, actual);
        }
Beispiel #16
0
        public void DecryptRus_string_key_encryptStringReturned()
        {     //arrange
            string x        = "бщцфаирщри, бл ячъбиуъ щбюэсяёш гфуаа!!!";
            string y        = "скорпион";
            string expected = "поздравляю, ты получил исходный текст!!!";
            //act
            VigenereCipher a      = new VigenereCipher(true);
            string         actual = a.Decrypt(x, y);

            //assert
            Assert.AreEqual(expected, actual);
        }
    static void Main(string[] args)
    {
        //передаем в конструктор класса буквы русского алфавита
        var cipher        = new VigenereCipher("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ");
        var inputText     = "Шифрование".ToUpper();
        var password      = "******".ToUpper();
        var encryptedText = cipher.Encrypt(inputText, password);

        Console.WriteLine("Зашифрованное сообщение: {0}", encryptedText);
        Console.WriteLine("Расшифрованное сообщение: {0}", cipher.Decrypt(encryptedText, password));
        Console.ReadLine();
    }
Beispiel #18
0
    static void Main(string[] args)
    {
        var cipher = new VigenereCipher();

        Console.Write("Введите текст: ");
        var inputText = Console.ReadLine().ToUpper();

        Console.Write("Введите ключ: ");
        var key           = Console.ReadLine().ToUpper();
        var encryptedText = cipher.Encrypt(inputText, key);

        Console.WriteLine("Зашифрованное сообщение: {0}", encryptedText);
        Console.WriteLine("Расшифрованное сообщение: {0}", cipher.Decrypt(encryptedText, key));
        Console.ReadLine();
    }
    static void Main(string[] args)
    {
        var cipher = new VigenereCipher();

        Console.Write("Enter your text: ");
        var inputText = Console.ReadLine().ToUpper();

        Console.Write("Enter your keyword: ");
        var password      = Console.ReadLine().ToUpper();
        var encryptedText = cipher.Encrypt(inputText, password);

        Console.WriteLine("Decoding: {0}", encryptedText);
        Console.WriteLine("Encode: {0}", cipher.Decrypt(encryptedText, password));
        Console.ReadLine();
    }
Beispiel #20
0
        public void DecryptTest()
        {
            const string text     = "lxfopvefrnhr";
            const string key      = "lemon";
            const string expected = "attackatdawn";

            var result = cipher.Decrypt(text, key);

            Assert.AreEqual(expected, result);
        }
        public static string VigenereCipher(string text, string key, VigenereCipherType vigenereCipherType, CryptType cryptType)
        {
            string result = string.Empty;
            vigenereCipher = new VigenereCipher(key.Split(' '), vigenereCipherType);
            switch (cryptType)
            {
                case CryptType.Encrypt:
                    result = vigenereCipher.Encrypt(text);
                    break;
                case CryptType.Decrypt:
                    result = vigenereCipher.Decrypt(text);
                    break;
            }

            return result;
        }
Beispiel #22
0
        public void OnPostText(string text, string key, bool operation)
        {
            try
            {
                if (text == null)
                {
                    throw new Exception("Уважаемый, переводить нечего. Текста нет.");
                }
                if (key == null)
                {
                    throw new Exception("Уважаемый, вы не ввели ключ. Не надо так.");
                }
                if (key.ToLower().Any(x => !Char.IsLetter(x) || !defaultAlphabet.Contains(x)))
                {
                    throw new Exception("Уважаемый, в ключе могут быть только русские буквы.");
                }

                ErrorMessage = null;
                if (TempDocumentText != null)
                {
                    text             = TempDocumentText;
                    Text             = TempDocumentText;
                    TempDocumentText = null;
                }
                var cipher = new VigenereCipher(text, key);
                Operation = operation;

                if (Operation)
                {
                    Result = cipher.Encrypt();
                }
                else
                {
                    Result = cipher.Decrypt();
                }

                Text = text;
                Key  = key;
            }

            catch (Exception x)
            {
                ErrorMessage = x.Message;
                Text         = text;
                Result       = "";
            }
        }
Beispiel #23
0
        public IActionResult VigenereDecrypt([FromBody] VigenereCipherViewModel viewModel)
        {
            VigenereCipher cipher = new VigenereCipher
                                        (viewModel.Key, Alphabets.GetAlphabet((Alphabets.AlphabetType)viewModel.AlphabetType));

            string decrypted = "";

            try
            {
                decrypted = cipher.Decrypt(viewModel.Message);
            }
            catch (Exception e)
            {
                return(BadRequest(new { Result = false, Message = e.Message }));
            }

            return(Json(decrypted));
        }
Beispiel #24
0
        public void GetText(string text, string password)
        {
            VigenereCipher cipher = new VigenereCipher("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ");

            if (text != null && password != null)
            {
                var encryptedText = cipher.Decrypt(text.ToUpper(), password.ToUpper());
                NonEncryptedText.Text = encryptedText;
            }
            else if (text == null)
            {
                throw new NoTextException();
            }
            else if (password == null)
            {
                throw new NoPasswordException();
            }
            else
            {
                throw new Exception();
            }
        }
Beispiel #25
0
        static void Main(string[] args)
        {
            Console.WriteLine("Choose alghorithm\n" +
                              "1. RailFence\n" +
                              "2. Transposition A\n" +
                              "3. Transposition B\n" +
                              "4. Transposition C\n" +
                              "5. Caesar\n" +
                              "6. Vigenere\n" +
                              "7. Exit\n");

            Console.WriteLine("Choose: ");

            int option = ReadInt();

            string wordToEncrypt = "";
            string encryptedWord = "";
            string decryptedWord = "";

            Console.WriteLine("Enter your word: ");
            wordToEncrypt = Console.ReadLine();

            ICipher cs = new RailFenceCipher(0);

            switch (option)
            {
            case 1:
                // RailFence
            {
                Console.WriteLine("Give key [Integer]: ");
                int key = ReadInt();

                cs = new RailFenceCipher(key);

                Console.WriteLine("Using RailFence Cipher");

                Console.WriteLine("\nWord given: " + wordToEncrypt);

                encryptedWord = cs.Encrypt(wordToEncrypt);
                Console.WriteLine("Encrypted word: " + encryptedWord);


                Console.WriteLine("Give word to decrypt: ");
                wordToEncrypt = Console.ReadLine();
                Console.WriteLine("Give key [Integer]: ");
                key = ReadInt();

                cs = new RailFenceCipher(key);

                decryptedWord = cs.Decrypt(wordToEncrypt);
                Console.WriteLine("Decrypted word: " + decryptedWord);
            }
            break;

            case 2:
                // Transposition A
            {
                cs = new TranspositionCipherA();

                Console.WriteLine("Using Transposition A Cipher");

                Console.WriteLine("\nWord given: " + wordToEncrypt);

                encryptedWord = cs.Encrypt(wordToEncrypt);
                Console.WriteLine("Encrypted word: " + encryptedWord);


                Console.WriteLine("Give word to decrypt: ");
                wordToEncrypt = Console.ReadLine();

                decryptedWord = cs.Decrypt(wordToEncrypt);
                Console.WriteLine("Decrypted word: " + decryptedWord);
            }
            break;

            case 3:
                // Transposition B
            {
                Console.WriteLine("Give key [String, Letters only]: ");
                string key = Console.ReadLine();

                cs = new TranspositionCipherB(key);

                Console.WriteLine("Using Transposition B Cipher");

                Console.WriteLine("\nWord given: " + wordToEncrypt);

                encryptedWord = cs.Encrypt(wordToEncrypt);
                Console.WriteLine("Encrypted word: " + encryptedWord);


                Console.WriteLine("Give word to decrypt: ");
                wordToEncrypt = Console.ReadLine();
                Console.WriteLine("Give key [String, Letters only]: ");
                key = Console.ReadLine();

                cs = new TranspositionCipherB(key);

                decryptedWord = cs.Decrypt(wordToEncrypt);
                Console.WriteLine("Decrypted word: " + decryptedWord);
            }
            break;

            case 4:
                // Transposition C
            {
                Console.WriteLine("Give key [String, Letters only]: ");
                string key = Console.ReadLine();

                cs = new TranspositionCipherC(key);

                Console.WriteLine("Using Transposition C Cipher");

                Console.WriteLine("\nWord given: " + wordToEncrypt);

                encryptedWord = cs.Encrypt(wordToEncrypt);
                Console.WriteLine("Encrypted word: " + encryptedWord);


                Console.WriteLine("Give word to decrypt: ");
                wordToEncrypt = Console.ReadLine();
                Console.WriteLine("Give key [String, Letters only]: ");
                key = Console.ReadLine();

                cs = new TranspositionCipherC(key);

                decryptedWord = cs.Decrypt(wordToEncrypt);
                Console.WriteLine("Decrypted word: " + decryptedWord);
            }
            break;

            case 5:
                // Caesar
            {
                Console.WriteLine("Give key 1 [Integer]: ");
                int key0 = ReadInt();

                Console.WriteLine("Give key 2 [Integer]: ");
                int key1 = ReadInt();

                cs = new CaesarCipher(key0, key1);
                Console.WriteLine("Using Caesar Cipher");

                Console.WriteLine("\nWord given: " + wordToEncrypt);

                encryptedWord = cs.Encrypt(wordToEncrypt);
                Console.WriteLine("Encrypted word: " + encryptedWord);


                Console.WriteLine("Give word to decrypt: ");
                wordToEncrypt = Console.ReadLine();

                Console.WriteLine("Give key 1 [Integer]: ");
                key0 = ReadInt();

                Console.WriteLine("Give key 2 [Integer]: ");
                key1 = ReadInt();

                cs = new CaesarCipher(key0, key1);

                decryptedWord = cs.Decrypt(wordToEncrypt);
                Console.WriteLine("Decrypted word: " + decryptedWord);
            }
            break;

            case 6:
                // Vigenere
            {
                Console.WriteLine("Give key [String, Letters only]: ");
                string key = Console.ReadLine();

                cs = new VigenereCipher(key);
                Console.WriteLine("Using Vigenere Cipher");

                Console.WriteLine("\nWord given: " + wordToEncrypt);

                encryptedWord = cs.Encrypt(wordToEncrypt);
                Console.WriteLine("Encrypted word: " + encryptedWord);


                Console.WriteLine("Give word to decrypt: ");
                wordToEncrypt = Console.ReadLine();
                Console.WriteLine("Give key [String, Letters only]: ");
                key = Console.ReadLine();

                cs = new VigenereCipher(key);

                decryptedWord = cs.Decrypt(wordToEncrypt);
                Console.WriteLine("Decrypted word: " + decryptedWord);
            }
            break;

            case 7:
                Console.WriteLine("Bye!");
                Console.ReadKey();
                return;

            default:
                Console.WriteLine("Wrong input!");
                Console.ReadKey();
                return;
            }


            Console.ReadKey();
            return;
        }
Beispiel #26
0
 public bool DecodingJob(VigenereCipher vigenereCipher, string encodeString, string rightPassword, string rightDecodeString)
 {
     return(vigenereCipher.Decrypt(encodeString, rightPassword) == rightDecodeString
         ? true
         : false);
 }
Beispiel #27
0
 public string VigenereCipher_DecryptsCorrectly(string keyword, string encryptedMessage)
 {
     return(cipher.Decrypt(keyword, encryptedMessage));
 }