2016-11-15 19 views
-1

私は、円柱転置暗号を使用する暗号プログラムで作業しています。まず、ユーザーの入力を取得して文字列配列に入れ、配列のシャッフル版を印刷します。メッセージを解読するために、暗号化されたメッセージを元に戻し、文字列配列の各「列」から1つの要素をメッセージとして出力しようとしています。文字列を文字列に変換する

たとえば、私のメッセージが「Hey there dude」の場合、「TD * HU * ERE __ * YE * HED」に暗号化されます(空白はアンダースコアに置き換えられ、空白はアスタリスクで置き換えられます)。復号化は配列を再編成し、配列の各要素の最初の項目を調べて文字列に出力し、配列の各要素の2番目の項目に移動して文字列に出力する必要があります。

 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; 
    } 
関連する問題