2016-11-15 3 views
-1

Я работаю над программой шифрования, которая использует столбчатый транспозиционный шифр. Я начинаю, захватывая ввод пользователя и помещая его в строковый массив, а затем печатая перетасованную версию массива. Чтобы расшифровать сообщение, я перепутаю зашифрованное сообщение и пытаюсь напечатать сообщение одного элемента из каждого столбца в массиве строк.Преобразование строкового массива в строку

Например, если мое сообщение «Привет, чувак», оно будет зашифровано до «TD * HU * ERE __ * YE * HED» (пробелы заменяются символами подчеркивания, а нулевые пробелы заменяются звездочками). Затем дешифрование должно реорганизовать массив, затем пройти первый элемент в каждом элементе массива, распечатать его до строки и затем перейти ко второму элементу в каждом элементе массива, чтобы напечатать его в строке, и, следовательно, вперед.

 string[] columnEncrypted = userMessage.Split(' '); 
     string[] columnDecrypted = new string[6]; 
     string DecryptedString = string.Empty; 

     columnDecrypted[0] = columnEncrypted[5]; 
     columnDecrypted[1] = columnEncrypted[2]; 
     columnDecrypted[2] = columnEncrypted[4]; 
     columnDecrypted[3] = columnEncrypted[3]; 
     columnDecrypted[4] = columnEncrypted[0]; 
     columnDecrypted[5] = columnEncrypted[1]; 

     for (int r = 0; r <= columnDecrypted.Length; r++) 
     { 
      for (int c = 0; c < 6; c++) 
      { 
       if (columnDecrypted[c] == "_") 
       { 
        DecryptedString += ' '; 
       } 
       else 
       { 
        DecryptedString += columnDecrypted[c]; 
       } 
      } 
     } 
     return DecryptedString; 

Это мой первый вопрос, заданный здесь, поэтому, пожалуйста, несите меня, если мое объяснение неясно. Если для лучшего ответа на мой вопрос требуется больше кода, пожалуйста, дайте мне знать, и я предоставлю больше.

Код шифрования выглядит следующим образом:

public string CipheredString(string userMessage) 
    { 
     string[] column = new string[6]; 

     for(int c = 0; c <= 5; c++) 
     { 
      for (int i = c; i < userMessage.Length; i += 6) 
      { 
       if (userMessage[i] == '.') 
       { 
        column[c] += "."; 
       } 
       else if (userMessage[i] == ',') 
       { 
        column[c] += ","; 
       } 
       else if (userMessage[i] == '?') 
       { 
        column[c] += "?"; 
       } 
       else if (userMessage[i] == '!') 
       { 
        column[c] += "!"; 
       } 
       else if (userMessage[i] == ' ') 
       { 
        column[c] += "_"; 
       } 
       else 
       { 
        column[c] += userMessage[i]; 
       } 
      } 
     } 

     if (column[5].Length < column[0].Length) 
     { 
      if (column[4].Length < column[0].Length) 
      { 
       if (column[3].Length < column[0].Length) 
       { 
        if (column[2].Length < column[0].Length) 
        { 
         if (column[1].Length < column[0].Length) 
         { 
          column[1] += "*"; 
          column[2] += "*"; 
          column[3] += "*"; 
          column[4] += "*"; 
          column[5] += "*"; 
         } 
         else 
         { 
          column[2] += "*"; 
          column[3] += "*"; 
          column[4] += "*"; 
          column[5] += "*"; 
         } 
        } 
        else 
        { 
         column[3] += "*"; 
         column[4] += "*"; 
         column[5] += "*"; 
        } 
       } 
       else 
       { 
        column[4] += "*"; 
        column[5] += "*"; 
       } 
      } 
      else 
      { 
       column[5] += "*"; 
      } 
     } 

     string EncryptedString = column[4] + " " + column[5] + " " + column[1] + " " + column[3] + " " + column[2] + " " + column[0]; 
     return EncryptedString; 
    } 
} 
+1

хмм ... что это вопрос? – BrunoLM

+3

Вы хорошо описали, что должна делать ваша программа, но я думаю, что вы забыли объяснить свою проблему. :) – Amy

+0

Чтобы ответить на ваш вопрос, вам нужно сообщить нам свой вопрос. – Jens

ответ

0

Это, как я в конечном итоге решить мой вопрос:

public string CipheredString(string userMessage) 
    { 
     string[] columnEncrypted = userMessage.Split(' '); 
     string[] columnDecrypted = new string[6]; 
     string DecryptedString = string.Empty; 
     string DirtyDecrypt = string.Empty; 

     columnDecrypted[0] = columnEncrypted[5]; 
     columnDecrypted[1] = columnEncrypted[2]; 
     columnDecrypted[2] = columnEncrypted[4]; 
     columnDecrypted[3] = columnEncrypted[3]; 
     columnDecrypted[4] = columnEncrypted[0]; 
     columnDecrypted[5] = columnEncrypted[1]; 

     for (int c = 0; c < columnDecrypted[0].Length; c++) 
     { 
      for (int r = 0; r < 6; r++) 
      { 
       string row = columnDecrypted[r]; 
       string column = row[c].ToString(); 
       DirtyDecrypt += column; 
      } 
     } 
     string CleanDecrypt = DirtyDecrypt.Replace("_", " ").Replace("*",""); 

     return CleanDecrypt; 
    } 
Смежные вопросы