private void CaesarDecryptBtn_Click(object sender, RoutedEventArgs e)//凯撒解密 { if (Regex.IsMatch(CaesarKey.Text, AllowedKeys) && Regex.IsMatch(CaesarEncrypted.Text, AllowedTexts)) { CaesarPlain.Text = Caesar.Decrypt(CaesarEncrypted.Text, Convert.ToInt32(CaesarKey.Text)); } else { MessageBox.Show("偏移量必须是正整数、原文或密文必须由字母和空格组成", "输入的数值有误"); } }
string AllowedNums = @"1|3|5|7|9|11|15|17|19|21|23|25"; //允许乘法密钥为26的互质数 private void CaesarEncryptBtn_Click(object sender, RoutedEventArgs e) //凯撒加密 { if (Regex.IsMatch(CaesarKey.Text, AllowedKeys) && Regex.IsMatch(CaesarPlain.Text, AllowedTexts)) //首先前端用正则表达式检查输入是否符合规范(之后相似部分不注释) { CaesarEncrypted.Text = Caesar.Encrypt(CaesarPlain.Text, Convert.ToInt32(CaesarKey.Text)); //执行加密函数 } else { MessageBox.Show("偏移量必须是正整数、原文或密文必须由字母和空格组成", "输入的数值有误");//输入不符合规范时提示 } }
private void ForceDecryptBtn_Click(object sender, RoutedEventArgs e) { string str = ""; if (Regex.IsMatch(CaesarEncrypted.Text, AllowedTexts)) { for (int i = 1; i < 27; i++) { str = str + i + " --> " + Caesar.Decrypt(CaesarEncrypted.Text, i) + Environment.NewLine;//重复执行解密26次,每次偏移量加1,将结果依次输出到原文框 } CaesarPlain.Text = str; } else { MessageBox.Show("密文必须由字母和空格组成", "输入的数值有误"); } }//凯撒穷举