📄 form4.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 加密解密程序
{
public partial class Form4 : Form
{
String text1;
String text2;
public int[,] XL = new int[2, 1] { { 0 }, { 0 } };
public int[,] key = new int[2, 2] { { 0, 0 }, { 0, 0 } };
public Form4()
{
InitializeComponent();
}
private void Form4_Closed(object sender, System.EventArgs e)
{
Form1.bFormCreated = false;
Program.form1.Activate();
}
private void button1_Click(object sender, EventArgs e)
{
bool sign = true;
text1 = textBox1.Text;
int length = text1.Length;
if (length % 2 != 0)
{
MessageBox.Show("密文输入错误,输入大写字母应为偶数个");
sign = false;
}
else
{
for (int i = 0; i < length; i = i + 2)
{
XL[0, 0] = turnCToI(text1[i]);
XL[1, 0] = turnCToI(text1[i + 1]);
if (XL[0, 0] == -1 || XL[1, 0] == -1)
{
MessageBox.Show("密文输入错误,只能输入大写字母");
sign = false;
break;
}
int temp = (Program.form1.key[0, 0] * Program.form1.key[1, 1] - Program.form1.key[0, 1] * Program.form1.key[1, 0] )%26;
if (temp == 1)
temp = 1;
else if (temp == 3)
temp = 9;
else if (temp == 5)
temp = 21;
else if (temp == 7)
temp = 15;
else if (temp == 9)
temp = 3;
else if (temp == 11)
temp = 19;
else if (temp == 15)
temp = 7;
else if (temp == 17)
temp = 23;
else if (temp == 19)
temp = 11;
else if (temp == 21)
temp = 5;
else if (temp == 23)
temp = 17;
else if (temp == 25)
temp = 25;
else
{
MessageBox.Show("所选加密矩阵不可逆,重新设置");
sign = false;
break;
}
key[0, 0] = (Program.form1.key[1, 1] * temp) % 26 ;
key[0, 1] = ((-1) * Program.form1.key[0, 1] * temp) % 26 ;
key[1, 0] = ((-1) * Program.form1.key[1, 0] * temp) % 26 ;
key[1, 1] = (Program.form1.key[0, 0] * temp) % 26 ;
XL[0, 0] = XL[0, 0] * key[0, 0] + XL[1, 0] * key[0, 1];
XL[1, 0] = XL[0, 0] * key[1, 0] + XL[1, 0] * key[1, 1];
XL[0, 0] = XL[0, 0] % 26;
XL[1, 0] = XL[1, 0] % 26;
if (XL[0, 0] < 0)
XL[0, 0] += 26;
if (XL[1, 0] < 0)
XL[0, 0] += 26;
text2 += turnIToC(XL[0, 0]);
text2 += turnIToC(XL[1, 0]);
}
}
if (sign == true)
{
textBox2.ReadOnly = false;
textBox2.Text = text2;
}
}
private int turnCToI(char x)
{
if (x == 'A')
return 1;
else if (x == 'B')
return 2;
else if (x == 'C')
return 3;
else if (x == 'D')
return 4;
else if (x == 'E')
return 5;
else if (x == 'F')
return 6;
else if (x == 'G')
return 7;
else if (x == 'H')
return 8;
else if (x == 'I')
return 9;
else if (x == 'J')
return 10;
else if (x == 'K')
return 11;
else if (x == 'L')
return 12;
else if (x == 'M')
return 13;
else if (x == 'N')
return 14;
else if (x == 'O')
return 15;
else if (x == 'P')
return 16;
else if (x == 'Q')
return 17;
else if (x == 'R')
return 18;
else if (x == 'S')
return 19;
else if (x == 'T')
return 20;
else if (x == 'U')
return 21;
else if (x == 'V')
return 22;
else if (x == 'W')
return 23;
else if (x == 'X')
return 24;
else if (x == 'Y')
return 25;
else if (x == 'Z')
return 0;
else
return -1;
}
private char turnIToC(int x)
{
if (x == 1)
return 'A';
else if (x == 2)
return 'B';
else if (x == 3)
return 'C';
else if (x == 4)
return 'D';
else if (x == 5)
return 'E';
else if (x == 6)
return 'F';
else if (x == 7)
return 'G';
else if (x == 8)
return 'H';
else if (x == 9)
return 'I';
else if (x == 10)
return 'J';
else if (x == 11)
return 'K';
else if (x == 12)
return 'L';
else if (x == 13)
return 'M';
else if (x == 14)
return 'N';
else if (x == 15)
return 'O';
else if (x == 16)
return 'P';
else if (x == 17)
return 'Q';
else if (x == 18)
return 'R';
else if (x == 19)
return 'S';
else if (x == 20)
return 'T';
else if (x == 21)
return 'U';
else if (x == 22)
return 'V';
else if (x == 23)
return 'W';
else if (x == 24)
return 'X';
else if (x == 25)
return 'Y';
else if (x == 0)
return 'Z';
else
return 'e';
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -