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