Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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#Caesar移位解密在多次移位后停止显示移位,移位时间变长_C#_Encryption_Caesar Cipher - Fatal编程技术网

C#Caesar移位解密在多次移位后停止显示移位,移位时间变长

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

我正在开发一个Ceaser密码,用于解密所附的.TXT文件。它必须在减缩的文本中显示所有可能的变化和结果。但到目前为止,我得到的只是显示了大约8个班次,每个班次都会随着更多的文本而变长,这是不可能发生的。有人能帮我找出下面代码中的问题吗

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
不太容易混淆。等等像你在这里所犯的错误通常是由于早期错误的选择造成的混乱造成的。