Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ConsoleApplication
- {
- class Program
- {
- static bool exit = false;
- static void Main ( string [] args )
- {
- Console.WriteLine ( "Для шифровки сообщения нажмите клавишу \"C\"" );
- Console.WriteLine ( "Для шифровки сообщения нажмите клавишу \"E\"" );
- Console.WriteLine ( "Для шифровки сообщения нажмите клавишу \"Esc\"" );
- while ( !exit )
- {
- Menu ();
- }
- }
- static char Shift ( char originalChar, int shift, char minVal = 'а', char maxVal = 'я' )
- {
- char newChar = ' ';
- newChar = Convert.ToChar ( originalChar + shift );
- if ( originalChar >= minVal & originalChar <= maxVal )
- {
- if ( newChar >= minVal & newChar <= maxVal )
- {
- return newChar = Convert.ToChar ( originalChar + shift );
- }
- else if ( newChar < minVal )
- {
- return newChar = Convert.ToChar ( maxVal - ( minVal - newChar ) + 1 );
- }
- else
- {
- return newChar = Convert.ToChar ( minVal + ( newChar - maxVal ) - 1 );
- }
- }
- else
- {
- return newChar = originalChar;
- }
- }
- static string Crypt ( string forCrypt, string secretWord, char minVal = 'а', char maxVal = 'я' )
- {
- int [] shifts = new int [secretWord.Length];
- char [] shiftSymbols = secretWord.ToCharArray ();
- string result = string.Empty;
- for ( int i = 0 ; i < forCrypt.Length ; i++ )
- {
- if ( i < secretWord.Length )
- {
- shifts [i] = TransferToShift ( shiftSymbols [i], minVal, maxVal );
- result += Shift ( forCrypt [i], shifts [i], minVal, maxVal );
- }
- else
- {
- int index = ( (secretWord.Length - ( i % secretWord.Length ) )-1);
- shifts [index] = TransferToShift ( shiftSymbols [index], minVal, maxVal );
- result += Shift ( forCrypt [i], shifts [index], minVal, maxVal );
- }
- }
- return result;
- }
- static int TransferToShift ( char take, char minVal = 'а', char maxVal = 'я' )
- {
- if ( take < maxVal & take >= minVal )
- {
- return take + 1 - minVal;
- }
- else if ( take == maxVal )
- {
- return take - minVal;
- }
- else
- {
- return 0;
- }
- }
- static string Encrypt ( string forEncrypt, string secretWord, char minVal = 'а', char maxVal = 'я' )
- {
- int [] shifts = new int [secretWord.Length];
- char [] shiftSymbols = secretWord.ToCharArray ();
- string result = string.Empty;
- for ( int i = 0 ; i < forEncrypt.Length ; i++ )
- {
- if ( i < secretWord.Length )
- {
- shifts [i] = TransferToShift ( shiftSymbols [i], minVal, maxVal );
- result += Shift ( forEncrypt [i], -shifts [i], minVal, maxVal );
- }
- else
- {
- int index = ( ( secretWord.Length - ( i % secretWord.Length ) ) - 1 );
- shifts [index] = TransferToShift ( shiftSymbols [index], minVal, maxVal );
- result += Shift ( forEncrypt [i], -shifts [index], minVal, maxVal );
- }
- }
- return result;
- }
- static void Menu ()
- {
- ConsoleKeyInfo key = Console.ReadKey ( true );
- switch ( key.Key )
- {
- case ConsoleKey.C:
- Console.Write ( "Введите слово для шифровки: " );
- string word = Console.ReadLine ();
- Console.Write ( "Введите слово которым с помощью которого будет произведена шифровка: " );
- string secretWord = Console.ReadLine ();
- Console.WriteLine ( "Зашифрованное слово: " + Crypt ( word, secretWord ) );
- break;
- case ConsoleKey.E:
- Console.Write ( "Введите слово для дешифровки: " );
- string cryptedWord = Console.ReadLine ();
- Console.Write ( "Введите слово которым с помощью которого будет произведена дешифровка: " );
- string secretWord2 = Console.ReadLine ();
- Console.WriteLine ( "Расшифрованное слово: " + Encrypt ( cryptedWord, secretWord2 ) );
- break;
- case ConsoleKey.Escape:
- exit = true;
- break;
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment