kisame1313

Untitled

Jul 19th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2.  
  3. namespace ConsoleApplication
  4. {
  5.     class Program
  6.     {
  7.  
  8.         static bool exit = false;
  9.  
  10.         static void Main ( string [] args )
  11.         {
  12.             Console.WriteLine ( "Для шифровки сообщения нажмите клавишу \"C\"" );
  13.             Console.WriteLine ( "Для шифровки сообщения нажмите клавишу \"E\"" );
  14.             Console.WriteLine ( "Для шифровки сообщения нажмите клавишу \"Esc\"" );
  15.             while ( !exit )
  16.             {
  17.                 Menu ();
  18.             }
  19.  
  20.         }
  21.  
  22.         static char Shift ( char originalChar, int shift, char minVal = 'а', char maxVal = 'я' )
  23.         {
  24.             char newChar = ' ';
  25.  
  26.             newChar = Convert.ToChar ( originalChar + shift );
  27.  
  28.             if ( originalChar >= minVal & originalChar <= maxVal )
  29.             {
  30.                 if ( newChar >= minVal & newChar <= maxVal )
  31.                 {
  32.                     return newChar = Convert.ToChar ( originalChar + shift );
  33.                 }
  34.                 else if ( newChar < minVal )
  35.                 {
  36.                     return newChar = Convert.ToChar ( maxVal - ( minVal - newChar ) + 1 );
  37.                 }
  38.                 else
  39.                 {
  40.                     return newChar = Convert.ToChar ( minVal + ( newChar - maxVal ) - 1 );
  41.                 }
  42.             }
  43.             else
  44.             {
  45.                 return newChar = originalChar;
  46.             }
  47.         }
  48.  
  49.         static string Crypt ( string forCrypt, string secretWord, char minVal = 'а', char maxVal = 'я' )
  50.         {
  51.             int [] shifts = new int [secretWord.Length];
  52.             char [] shiftSymbols = secretWord.ToCharArray ();
  53.             string result = string.Empty;
  54.  
  55.             for ( int i = 0 ; i < forCrypt.Length ; i++ )
  56.             {
  57.  
  58.                 if ( i < secretWord.Length )
  59.                 {
  60.                     shifts [i] = TransferToShift ( shiftSymbols [i], minVal, maxVal );
  61.                     result += Shift ( forCrypt [i], shifts [i], minVal, maxVal );
  62.                 }
  63.                 else
  64.                 {
  65.                     int index = ( (secretWord.Length - ( i % secretWord.Length ) )-1);
  66.                     shifts [index] = TransferToShift ( shiftSymbols [index], minVal, maxVal );
  67.                     result += Shift ( forCrypt [i], shifts [index], minVal, maxVal );
  68.                 }
  69.             }
  70.             return result;
  71.         }
  72.  
  73.         static int TransferToShift ( char take, char minVal = 'а', char maxVal = 'я' )
  74.         {
  75.             if ( take < maxVal & take >= minVal )
  76.             {
  77.                 return take + 1 - minVal;
  78.             }
  79.  
  80.             else if ( take == maxVal )
  81.             {
  82.                 return take - minVal;
  83.             }
  84.  
  85.             else
  86.             {
  87.                 return 0;
  88.             }
  89.         }
  90.  
  91.         static string Encrypt ( string forEncrypt, string secretWord, char minVal = 'а', char maxVal = 'я' )
  92.         {
  93.             int [] shifts = new int [secretWord.Length];
  94.             char [] shiftSymbols = secretWord.ToCharArray ();
  95.             string result = string.Empty;
  96.  
  97.             for ( int i = 0 ; i < forEncrypt.Length ; i++ )
  98.             {
  99.  
  100.                 if ( i < secretWord.Length )
  101.                 {
  102.                     shifts [i] = TransferToShift ( shiftSymbols [i], minVal, maxVal );
  103.                     result += Shift ( forEncrypt [i], -shifts [i], minVal, maxVal );
  104.                 }
  105.                 else
  106.                 {
  107.                     int index = ( ( secretWord.Length - ( i % secretWord.Length ) ) - 1 );
  108.                     shifts [index] = TransferToShift ( shiftSymbols [index], minVal, maxVal );
  109.                     result += Shift ( forEncrypt [i], -shifts [index], minVal, maxVal );
  110.                 }
  111.             }
  112.             return result;
  113.         }
  114.  
  115.         static void Menu ()
  116.         {
  117.  
  118.             ConsoleKeyInfo key = Console.ReadKey ( true );
  119.  
  120.             switch ( key.Key )
  121.             {
  122.                 case ConsoleKey.C:
  123.                     Console.Write ( "Введите слово для шифровки: " );
  124.                     string word = Console.ReadLine ();
  125.                     Console.Write ( "Введите слово которым с помощью которого будет произведена шифровка: " );
  126.                     string secretWord = Console.ReadLine ();
  127.                     Console.WriteLine ( "Зашифрованное слово: " + Crypt ( word, secretWord ) );
  128.                     break;
  129.  
  130.                 case ConsoleKey.E:
  131.                     Console.Write ( "Введите слово для дешифровки: " );
  132.                     string cryptedWord = Console.ReadLine ();
  133.                     Console.Write ( "Введите слово которым с помощью которого будет произведена дешифровка: " );
  134.                     string secretWord2 = Console.ReadLine ();
  135.                     Console.WriteLine ( "Расшифрованное слово: " + Encrypt ( cryptedWord, secretWord2 ) );
  136.                     break;
  137.  
  138.                 case ConsoleKey.Escape:
  139.                     exit = true;
  140.                     break;
  141.             }
  142.         }
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment