If statement 包含和等于相等字符串上的条件faling、加密和解密
亲爱的助手们: 当我遇到一些奇怪的事情时,我只是在测试我的技能,并像往常一样学习,在网上搜索,但就是找不到 我不知道出了什么问题 我试图构建一个加密程序,将其密钥存储在isostream中。 第一次可以无条件地写入密钥,但之后需要输入旧密钥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))
(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很多