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 >= 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# 我正在尝试制作简单的加密器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章