C#Scramble&解密文本

时间:2016-11-08 23:40:44

标签: c# text scramble

我已经有了这种方法来加扰我的文字,但我不知道如何解读它?

        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();

我对数字和计算这类事情并不擅长,如果有人可以帮助我,这样的事情会很好。

我已经搜索了函数,但我找不到一个我理解的例子。

//编辑:

- 如何制作一个Scramble或Shuffle函数,用特定的数字对文本进行混洗,以便每次都以相同的方式对文本进行加扰?

- 之后如何解开呢?

1 个答案:

答案 0 :(得分:4)

只做你已经向后做的事情(你需要以相反的顺序使用相同种子中的相同随机数,所以先把它们放在列表中):

        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);