C#加扰和解扰文本

RaI*_*INi 2 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();
Run Code Online (Sandbox Code Playgroud)

我不太擅长通过数字和计算来处理这类事情,如果有人可以帮助我,那么这种事情会很好。

我已经搜索过函数,但是找不到我能理解的示例。

//编辑:

-如何创建加扰或随机播放功能,以特定的数字对文本进行随机播放,以便每次都以相同的方式对文本进行加扰?

-并且在那之后我如何进行改组?

小智 6

只需执行已经向后执行的相同操作即可(您需要以相反的顺序使用来自同一种子的相同随机数,因此请首先在列表中获得它们):

        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);
Run Code Online (Sandbox Code Playgroud)