C# 我正在尝试制作简单的加密器 [重复]

Posted

技术标签:

【中文标题】C# 我正在尝试制作简单的加密器 [重复]【英文标题】:C# i am trying to make simple Encryptor [duplicate] 【发布时间】:2020-12-30 21:12:40 【问题描述】:

我做了简单的加密器 我需要加密单词不仅是一个字母,然后我如何解密单词

        string[] Alpha = new string[]
        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ;
        string[][] Encryptor = new string[][]
        
          new string[] "4", "/=", "@", "/-",
          new string[] "8", "13", "|3", "&" ,
          new string[] "(", "¢", "<", "[", ,
          new string[] "[)", "|>", "|)", "|]",
          new string[] "3", "€", "[-", "[=" ,
          new string[] "|=", "ƒ", "/=",
          new string[] "6", "(_+",
          new string[] "#", "/-/", "[-]", "]-[", ")-(", "(-)",
          new string[] "1", "!", "|", "][", ":",
          new string[] "_|", "_/",
          new string[] "|<", "|",
          new string[] "1_", "|_", "[_",
          new string[] "|V|", "|V/|",
          new string[] "|V", "/v",
          new string[] "[]", "0", "()",
          new string[] "|*", "|0", "|o" ,
          new string[] "(_,)", "()_", "0_", "O_",
          new string[] "2", "|?", "|2",
          new string[] "5", "$", "_/~" ,
          new string[] "7", "¯|¯" ,
          new string[] "(_)", "!_!", "|_|",
          new string[] "|/", "!/",
          new string[] "`//", "\v/", "|_|_/",
          new string[] "><", "", ")(",
          new string[] "`/", "!/",
          new string[] "≥", "7_", ">_"
        ;
        Random rand = new Random();
        string str = Console.ReadLine();
        int index = Array.IndexOf(Alpha, str);
        string rez = Encryptor[index][rand.Next(Encryptor[index].Length)];

如果长度大于 1“索引超出范围”,则会出现错误 Console.Write(rez);

        Console.ReadKey();

【问题讨论】:

复制:What is an IndexOutOfRangeException / ArgumentOutOfRangeException and how do I fix it? 您的索引很可能是-1。使用调试器检查发生了什么 是的,它是-1,我该如何解决这个问题 不要输入不在Alpha 中的内容?如果用户输入大写字母怎么办?还是数字?还是空白字符?还是别的什么? 例如,如果您的输入是"aa",则index 将是-1,因为Alpha 不包含"aa"。你可能想要string rez = string.Empty; foreach(char c in str) int index = Array.IndexOf(Alpha, c.ToString()); if (index &gt;= 0) rez += Encryptor[index][rand.Next(Encryptor[index].Length)]; 之类的东西。这根本没有优化,但应该给你一个起点。 【参考方案1】:

问题是当你有多个字符时,因为 alpha 数组的每个值只有一个字符。所以你应该循环遍历每个字符。我做了一个fiddle 下面是循环输入字符串的每个字符的代码更改。

Random rand = new Random();
string str = Console.ReadLine();
    
StringBuilder rez = new StringBuilder();
for (int i = 0; i < str.Length; i++)

    int index = Array.IndexOf(Alpha, str[i].ToString());
    string[] curEnc = Encryptor[index];
    int r = rand.Next(curEnc.Length-1);
    rez.Append(curEnc[r]);


//Console.WriteLine(rez.ToString());

【讨论】:

以上是关于C# 我正在尝试制作简单的加密器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我用RPG加密文件解包器破解的游戏是这样的?

Python实现DES加密算法的文本加密器

如何在java中加密密码管理器的密码[关闭]

在 C# 中播放 byte[] [关闭]

Vigenere 密码破坏了一些

C#访问加密的SQLite数据库