kisame1313

Untitled

Jul 19th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.94 KB | None | 0 0
  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.                     result += Shift ( forCrypt [index], shifts [index], minVal, maxVal );
  67.                 }
  68.             }
  69.             return result;
  70.         }
  71.  
  72.         static int TransferToShift ( char take, char minVal = 'а', char maxVal = 'я' )
  73.         {
  74.             if ( take < maxVal & take >= minVal )
  75.             {
  76.                 return take + 1 - minVal;
  77.             }
  78.  
  79.             else if ( take == maxVal )
  80.             {
  81.                 return take - minVal;
  82.             }
  83.  
  84.             else
  85.             {
  86.                 return 0;
  87.             }
  88.         }
  89.  
  90.         static string Encrypt ( string forEncrypt, string secretWord, char minVal = 'а', char maxVal = 'я' )
  91.         {
  92.             int [] shifts = new int [secretWord.Length];
  93.             char [] shiftSymbols = secretWord.ToCharArray ();
  94.             string result = string.Empty;
  95.  
  96.             for ( int i = 0 ; i < forEncrypt.Length ; i++ )
  97.             {
  98.  
  99.                 if ( i < secretWord.Length )
  100.                 {
  101.                     shifts [i] = TransferToShift ( shiftSymbols [i], minVal, maxVal );
  102.                     result += Shift ( forEncrypt [i], -shifts [i], minVal, maxVal );
  103.                 }
  104.                 else
  105.                 {
  106.                     int index = ( secretWord.Length - ( i % secretWord.Length ) ) - 1;
  107.                     result += Shift ( forEncrypt [index], -shifts [index], minVal, maxVal );
  108.                 }
  109.             }
  110.             return result;
  111.         }
  112.  
  113.         static void Menu ()
  114.         {
  115.  
  116.             ConsoleKeyInfo key = Console.ReadKey ( true );
  117.  
  118.             switch ( key.Key )
  119.             {
  120.                 case ConsoleKey.C:
  121.                     Console.Write ( "Введите слово для шифровки: " );
  122.                     string word = Console.ReadLine ();
  123.                     Console.Write ( "Введите слово которым с помощью которого будет произведена шифровка: " );
  124.                     string secretWord = Console.ReadLine ();
  125.                     Console.WriteLine ( "Зашифрованное слово: " + Crypt ( word, secretWord ) );
  126.                     break;
  127.  
  128.                 case ConsoleKey.E:
  129.                     Console.Write ( "Введите слово для дешифровки: " );
  130.                     string cryptedWord = Console.ReadLine ();
  131.                     Console.Write ( "Введите слово которым с помощью которого будет произведена дешифровка: " );
  132.                     string secretWord2 = Console.ReadLine ();
  133.                     Console.WriteLine ( "Расшифрованное слово: " + Encrypt ( cryptedWord, secretWord2 ) );
  134.                     break;
  135.  
  136.                 case ConsoleKey.Escape:
  137.                     exit = true;
  138.                     break;
  139.             }
  140.         }
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment