If statement 包含和等于相等字符串上的条件faling、加密和解密

If statement 包含和等于相等字符串上的条件faling、加密和解密,if-statement,encryption,conditional-statements,equals,contains,If Statement,Encryption,Conditional Statements,Equals,Contains,亲爱的助手们: 当我遇到一些奇怪的事情时,我只是在测试我的技能,并像往常一样学习,在网上搜索,但就是找不到 我不知道出了什么问题 我试图构建一个加密程序,将其密钥存储在isostream中。 第一次可以无条件地写入密钥,但之后需要输入旧密钥 (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("key.txt", FileMode.CreateNew, isoStore))

亲爱的助手们: 当我遇到一些奇怪的事情时,我只是在测试我的技能,并像往常一样学习,在网上搜索,但就是找不到 我不知道出了什么问题

我试图构建一个加密程序,将其密钥存储在isostream中。 第一次可以无条件地写入密钥,但之后需要输入旧密钥

        (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("key.txt", FileMode.CreateNew, isoStore))
            {
                using (StreamWriter writer = new StreamWriter(isoStream))
                {
                    //keycreation begin
                    Random rnd = new Random();
                    int random1 = rnd.Next(20000, 2000000); //number between 2000 and 2 million
                    stringrandom0 = random1.ToString();
                    char[] chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray();
                    Random r = new Random();
                    int i = r.Next(chars.Length);
                    int q = r.Next(chars.Length);
                    int w = r.Next(chars.Length);
                    stringrandom1 = chars[i].ToString();
                    stringrandom2 = chars[q].ToString();
                    stringrandom3 = chars[w].ToString();
                    int random2 = rnd.Next(20000, 2000000); //number between 2000 and 2 million
                    stringrandom4 = random2.ToString();
                    key = stringrandom0 + stringrandom1 + stringrandom2 + stringrandom3 + stringrandom4;
                    textBox2.Text = "Creation & Encryption succesful finished your key = " + key + " do not lose this key!";
                    //key will look like this: letters, numbers, letters
                    //key creation end

                    writer.WriteLine(key);

                    File.Create(@"C:\Users\Legion\Desktop\encryption\text\" + fileName1).Close();
                    //Console.WriteLine("You have written to the file.");
                }
            }
所以它给了我一个关键:当事情不顺利时,我让它显示在一个文本框中。我是这样接受的

      IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
        using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("key.txt", FileMode.Open, isoStore))
        {
            using (StreamReader reader = new StreamReader(isoStream))
            {
                keyentered = textBox4.Text;
                checkkey = (reader.ReadToEnd());
                textBox1.Text = checkkey;
                textBox3.Text = keyentered;
            }
        }
正如您所看到的,我输入的代码被设置为keycenter,我输入了这个:156216*ek316677

Checkkey读写的文章,当然为了检查,我把它放在一个文本框中,它显示如下:(完全没有空格)156216*ek316677

比较 156216*ek316677。 156216*ek316677

这是检查代码

if (isoStore.FileExists("key.txt"))
        {
             using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("key.txt", FileMode.Open, isoStore))
            {
                if (keyentered.Contains(checkkey) || checkkey == keyentered)
                {
                    using (StreamWriter writer = new StreamWriter(isoStream))
                    {
                        //keycreation begin
                        Random rnd = new Random();
                        int random1 = rnd.Next(20000, 2000000); //number between 2000 and 2 million
                        stringrandom0 = random1.ToString();
                        char[] chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray();
                        Random r = new Random();
                        int i = r.Next(chars.Length);
                        int q = r.Next(chars.Length);
                        int w = r.Next(chars.Length);
                        stringrandom1 = chars[i].ToString();
                        stringrandom2 = chars[q].ToString();
                        stringrandom3 = chars[w].ToString();
                        int random2 = rnd.Next(20000, 2000000); //number between 2000 and 2 million
                        stringrandom4 = random2.ToString();
                        key = stringrandom0 + stringrandom1 + stringrandom2 + stringrandom3 + stringrandom4;
                        textBox2.Text = "Creation & Encryption succesful finished your key = " + key + " do not lose this key!";
                        //key will look like this: letters, numbers, letters
                        //key creation end

                        writer.WriteLine(key);

                        File.Create(@"C:\Users\Legion\Desktop\encryption\text\" + fileName1).Close();
                        //Console.WriteLine("You have written to the file.");
                    }
                }
                else
                {
                    textBox2.Text = "invalid key entered!";
                }
            }
        }
问题是它一直说输入的密钥无效,而它们完全相等,那么为什么if条件失败呢? 我尝试了一个包含,但失败的方式完全相同

谢谢你给我的任何帮助。
干杯,戈达彻,狂热者和书呆子D

表达式
keycenter.Contains(checkkey)| checkkey==keycenter
中使用的变量中有哪些值,可以收缩为
keycenter.Contains(checkkey)
(我想)?值的声明?仅公共静态字符串keyentered=“”;否,在使用调试器时,
keycentered
checkkey
达到
if(keycentered.Contains(checkkey)| checkkey==keycentered)
时的值是多少?我使用断点对其进行了调试。checkkey=156216*ek316677\r\n并且keyentered为空!编辑:我用这种方式修复了它,声明是在一个使它不起作用的地方,thx很多