C#Caesar移位解密在多次移位后停止显示移位,移位时间变长
我正在开发一个Ceaser密码,用于解密所附的.TXT文件。它必须在减缩的文本中显示所有可能的变化和结果。但到目前为止,我得到的只是显示了大约8个班次,每个班次都会随着更多的文本而变长,这是不可能发生的。有人能帮我找出下面代码中的问题吗C#Caesar移位解密在多次移位后停止显示移位,移位时间变长,c#,encryption,caesar-cipher,C#,Encryption,Caesar Cipher,我正在开发一个Ceaser密码,用于解密所附的.TXT文件。它必须在减缩的文本中显示所有可能的变化和结果。但到目前为止,我得到的只是显示了大约8个班次,每个班次都会随着更多的文本而变长,这是不可能发生的。有人能帮我找出下面代码中的问题吗 public class Program { public static void Main(string[] args) { string text = System.IO.File.ReadAllText(@"FilePath
public class Program
{
public static void Main(string[] args)
{
string text = System.IO.File.ReadAllText(@"FilePath");
string file;
int shift = 0;
string decoded_text;
char character = '0';
char[] alphabet = new char[26]
{
'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'
};
Console.WriteLine("The encrypted text is \n{0}", text); //Displays the encrypted text, shows that it gathered the text correctly from the fiile
for (int i = 0; i < alphabet.Length; i++)
{
decoded_text = "";
foreach (char c in text)
{
character = c;
if (!alphabet.Contains(character))
{
decoded_text += character;
continue;
}
shift = Array.IndexOf(alphabet, character) - i;
if (shift <= 0) shift = shift + 26;
if (shift >= 26) shift = shift - 26;
text += alphabet[shift];
}
Console.WriteLine("\nShift {0} \n {1}", i + 1, text);
}
}
}
公共类程序
{
公共静态void Main(字符串[]args)
{
string text=System.IO.File.ReadAllText(@“FilePath”);
字符串文件;
int-shift=0;
字符串解码文本;
字符='0';
字符[]字母表=新字符[26]
{
‘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”
};
Console.WriteLine(“加密文本是\n{0}”,text);//显示加密文本,表明它从文件中正确收集了文本
for(int i=0;i
这是包含在.TXT文件中的文本:
YMJNS HWJIN GQJQJ LFHDT
KYMJR FYMJR FYNHF QLJSN
ZXLJT WLJGT TQJBN QQGJJ
CUQTW JINSF KWJJJU ZGQNH
YFQPN SMNXM TRJHN YDTKQ
NSHTQ STSYM JGNHJ SYJSF
WDTKM NXGNW YMXYT UGTTQ
JBFXG TWSTS YMJXJ HTSIT
KSTAJ RGJWJ NLMYJ JSKNK
YJJSN系统IJXYK FRNQD
HNWHZ RXYFS HJXYM JXTST
KFXMT JRFPJ WXYTU QFWLJ
QDXJQ KYFZL MYB JSYTS
YTGJH TRJTS JTKYM JBTWQ
我是XKN SJXYR FYMJR FYNHN
FSXBM TXJBT WPSTB KTWRX
YMJGF XNXTK HTRUZ YJWXH
NJSHJ FSIJHQ JHYWT SNHHHN
WHZNY WDXYT UMJQF NIYMJ
KTZSI FYNTS XTKYM JINLN
YFQJW FFSIN XBNIJ QDWJH
TLSNX JIFXY MJKTW JKFYM
JWTKY MJINL NYFQF LJXYT
UGTTQ JFSFQ LJGWF NXSTB
FKZSI FRJSY FQFXU JHYTK
RTIJW SRFYM JRFYN HXFSI
TAJWY MJQFX YHJSY ZWDBF
XZXJI YTKTW RYMJY MJTWJ
YNHFQ KTZSI FYNTS TKRTI
JWSHT RUZYJ WXHNJ SHJJS
我
设置断点并逐步检查应用程序,以便查看它在每一步中都在做什么。为什么要在应该输入的时候向
text
添加内容?随机更改内容直到它们工作为止不是一种好方法。请看这个。尤其要注意将程序分解成小方法的建议。你能写一个接受字符串和移位并返回移位字符串的方法吗?如果你能做到这一点,那么这个方法比你现有的程序简单,你可以在一个循环中使用这个方法,尝试许多不同的移位。更简单的方法将更容易编写,并且在出错时更容易调试。另一个好建议是仔细检查您的程序,并确保所有内容都是根据它在tin上的作用命名的。为什么有两个变量c
和character
做同样的事情?为什么变量文本
和解码文本
容易混淆encodedText
和decodedText
不太容易混淆。等等像您在这里犯的错误通常是由于早期错误选择导致的混乱。设置断点并逐步检查您的应用程序,以便查看它在每一步中都在做什么。为什么要在应该输入的文本中添加内容?随机更改内容直到它们正常工作不是一个好方法技术。请看这个。尤其要注意将程序分解成小方法的建议。你能写一个接受字符串和移位并返回移位字符串的方法吗?如果你能做到这一点,那么这个方法比你现有的程序简单,你可以在一个循环中使用这个方法,尝试许多不同的移位。更简单的方法将更容易编写,并且在出错时更容易调试。另一个好建议是仔细检查您的程序,并确保所有内容都是根据它在tin上的作用命名的。为什么有两个变量c
和character
做同样的事情?为什么变量文本
和解码文本
容易混淆encodedText
和decodedText
不太容易混淆。等等像你在这里所犯的错误通常是由于早期错误的选择造成的混乱造成的。