Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我正在尝试制作简单的加密机_C#_Arrays_Encryption_Random_Indexing - Fatal编程技术网

C# 我正在尝试制作简单的加密机

C# 我正在尝试制作简单的加密机,c#,arrays,encryption,random,indexing,C#,Arrays,Encryption,Random,Indexing,我制作了简易加密机 我不仅需要加密一个字母,还需要加密之后如何解密单词 string[] Alpha = new string[] {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", &q

我制作了简易加密机 我不仅需要加密一个字母,还需要加密之后如何解密单词

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

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

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());
Random rand=new Random();
string str=Console.ReadLine();
StringBuilder rez=新的StringBuilder();
对于(int i=0;i
Duplicate:您的索引很可能是-1。使用调试器检查-1的运行情况,以及如何修复不输入不在
Alpha
中的内容的问题?如果用户输入大写字母怎么办?还是数字?还是空白字符?或者其他内容?例如,如果您的输入是
“aa”
,则
索引将是
-1
,因为
Alpha
不包含
“aa”
。您可能需要类似于
string rez=string.Empty;foreach(str中的字符c){int index=Array.IndexOf(Alpha,c.ToString());if(index>=0){rez+=Encryptor[index][rand.Next(Encryptor[index].Length)];}
。这根本不是优化的,但应该给你一个起点。
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());