예제 #1
0
 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("偏移量必须是正整数、原文或密文必须由字母和空格组成", "输入的数值有误");
     }
 }
예제 #2
0
 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("偏移量必须是正整数、原文或密文必须由字母和空格组成", "输入的数值有误");//输入不符合规范时提示
     }
 }
예제 #3
0
        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("密文必须由字母和空格组成", "输入的数值有误");
            }
        }//凯撒穷举