2016-11-08 4 views
0

私はすでにこの方法でテキストをスクランブルしていますが、それを解読する手がかりがありません。C#Scramble&Descramble Text

 string input = "https://www.google.de/"; 
     char[] chars = input.ToArray(); 
     Random r = new Random(259); 
     for (int i = 0; i < chars.Length; i++) 
     { 
      int randomIndex = r.Next(0, chars.Length); 
      char temp = chars[randomIndex]; 
      chars[randomIndex] = chars[i]; 
      chars[i] = temp; 
     } 
     new string(chars); 

     Console.WriteLine(chars); 
     Console.ReadKey(); 

私は数字や計算などのこれらのタイプのものでは良くありません。何かが助けてくれればいいと思います。

私はすでに関数を検索しましたが、わかりやすい例が見つかりませんでした。

//編集:

は - どのように私はそれが同じように毎回テキストをスクランブルして特定の番号とテキストをシャッフルスクランブルやシャッフル機能を行うことができますか?

- それ以降はどのようにアンシャッフルできますか?

+0

あなたがすることはできませんだけでランダムな文字を空中から引き出し、物を元に戻すことができると期待します。あなたは、逆の方法を知っているそれらをエンコードする(*スクランブル*)特定の方法を設計する必要があります。あなたが値のランダムな置き換えを取り消すことができる*と計算*はありません。 –

+0

しかし、私はそれが種子で行うことができる他の投稿を読んで?なぜなら、乱数ではなく種を宣言すれば、常に同じ方法でそれをスクランブルするからです。 – RaINi

+0

確かに。同じ乱数を同じ順序で得ることはできますが、単純に投棄した元の値に戻る方法はありません。 *元に戻すアルゴリズムがあるスクランブリングの具体的な手段を設計する必要があります。*最初のコメントで言いました。私はもう一度言ったことを助けるつもりですか? –

答えて

3

はちょうどあなたがすでに後方たのと同じことを行う(あなたが逆の順序で同じシードから同じ乱数を使用するので、最初のリストでそれらを取得する必要があります):

 string input = "https://www.google.de/"; 
     char[] chars = input.ToArray(); 
     Random r = new Random(259); 
     for (int i = 0; i < chars.Length; i++) 
     { 
      int randomIndex = r.Next(0, chars.Length); 
      char temp = chars[randomIndex]; 
      chars[randomIndex] = chars[i]; 
      chars[i] = temp; 
     } 
     string scrambled = new string(chars); 

     Console.WriteLine(chars); 
     Console.ReadKey(); 

     r = new Random(259); 
     char[] scramChars = scrambled.ToArray(); 
     List<int> swaps = new List<int>(); 
     for (int i = 0; i < scramChars.Length; i++) 
     { 
      swaps.Add(r.Next(0, scramChars.Length)); 
     } 
     for (int i = scramChars.Length - 1; i >= 0; i--) 
     { 
      char temp = scramChars[swaps[i]]; 
      scramChars[swaps[i]] = scramChars[i]; 
      scramChars[i] = temp; 
     } 

     string unscrambled = new string(scramChars); 

     Console.WriteLine(scramChars); 
+0

助けてくれてありがとう(: – RaINi

+0

元の投稿のすべてのコメントが不可能であると言い、正しい答えが投稿されているのが大好きです)+1 – nhouser9

+0

@ nhouser9 ikr:D – RaINi