📄 code.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
namespace code
{
class Code
{
public string plaintText;//明文
public string cipher;//暗文
public string key;// 密钥
public Code(string a, string b, string c)
{
plaintText = a;
cipher = b;
key = c;
}//构造函数
public string changep(string a)
{
int lenth = a.Length;
string s1;
int k;
char b;
k = Convert.ToInt16( key);
s1 = "";
for(int i = 0;i<lenth;i++ ){
if (!a[i].Equals(' '))
b = Convert.ToChar(a[i] + k);
else b = a[i];
if (b > 'z')
b = Convert.ToChar(b - 26);
s1 += Convert.ToString( b);
}
return s1;
}//移位密码加密
public string changec(string a) {
int lenth = a.Length;
string s1;
int k;
char b;
k = Convert.ToInt16(key);
s1 = "";
for (int i = 0; i < lenth; i++)
{
if (!a[i].Equals(' '))
b = Convert.ToChar(a[i] - k);
else b = a[i];
if (!b.Equals(' ')&&b < 'a')
b = Convert.ToChar(b + 26);
s1 += Convert.ToString(b);
}
return s1;
}//移位密码解密
public Boolean judge(string b)
{
string[] k = b.Split(',');
int k1, k2;
k1 = Convert.ToInt16(k[0]);
k2 = Convert.ToInt16(k[1]);
int[] n = new int[13];
for (int i = 0; i <= 12; i++)
{
if(i == 6)continue;
n[i] = i * 2 + 1;
}
n[6] = 0;
for(int i = 0 ;i<= 12;i++)
{
if (i == 6) continue;
if (n[i] == k1) return true;
}
return false;
}// 仿射密码判断密钥是否合法
public string changep1(string a,string b) {
string[] k = b.Split(',');
int k1, k2;
k1 = Convert.ToInt16(k[0]);
k2 = Convert.ToInt16(k[1]);
int lenth = a.Length;
string s1 = "";
char b1;
for (int i = 0; i < lenth; i++)
{
if (!a[i].Equals(' '))
b1 = Convert.ToChar((Convert.ToInt16(a[i] - 97) * k1 + k2) % 26 + 97);
else b1 = a[i];
s1 += Convert.ToString(b1);
}
return s1;
}//仿射密码加密
public int findk(int k)
{
int[] n = new int[13];
for (int i = 0; i <= 12; i++)
{
if(i == 6)continue;
n[i] = i * 2 + 1;
}
n[6] = 0;
for(int i = 0;i<=12;i++)
{
if(k * n[i] % 26 == 1)
return n[i];
}
return 0;
}//仿射密码寻找解密密钥
public string changec1(string a, string b)
{
string[] k = b.Split(',');
int k1, k2,k3;
k3 = Convert.ToInt16(k[0]);
k2 = Convert.ToInt16(k[1]);
k1 = findk(k3);
int lenth = a.Length;
string s1 = "";
char b1;
for (int i = 0; i < lenth; i++)
{
if (!a[i].Equals(' '))
b1 = Convert.ToChar(((k1 * (Convert.ToInt16(a[i]) - 97 - k2)) + 26 * k2) % 26 + 97);
else b1 = a[i];
s1 += Convert.ToString(b1);
}
return s1;
}//仿射密码解密
public string changep2(string a, string b)
{
int lenth1 = a.Length;
int lenth2 = b.Length;
char b1;
string s1 = "";
int spacecount = 0;
for (int i = 0; i < a.Length; i++)
{
if (a[i] == ' ')
{
spacecount++;
b1 = a[i];
}
else b1 = Convert.ToChar(Convert.ToInt16((a[i] + b[(i - spacecount) % lenth2] - 97 - 97) % 26) + 97);
s1 += Convert.ToString(b1);
}
return s1;
}//维吉尼亚密码加密
public string changec2(string a, string b)
{
int lenth1 = a.Length;
int lenth2 = b.Length;
char b1;
string s1 = "";
int spacecount = 0;
for (int i = 0; i < a.Length; i++)
{
if (a[i] == ' ')
{
spacecount++;
b1 = a[i];
}
else b1 = Convert.ToChar(Convert.ToInt16((a[i] - b[(i - spacecount) % lenth2]+26) % 26) + 97);
s1 += Convert.ToString(b1);
}
return s1;
}//维吉尼亚密码解密
public string changep3(string a, string b)
{
string[] k = b.Split(',');
int lenth = a.Length;
char b1;
string s1 = "";
int spacecount = 0;
int j = 0;
for (int i = 0; i < lenth/6; i++)
{
for (int l = 0; l < 6; l++)
{
if (a[i] == ' ')
{
spacecount++;
b1 = a[i];
}
else
{
b1 = Convert.ToChar(a[Convert.ToInt16(k[j % 6]) - 1+i*6]);
j++;
}
s1 += Convert.ToString(b1);
}
}
return s1;
}//置换密码加密
public string changec3(string a, string b)
{
string[] k1 = b.Split(',');
int lenth = a.Length;
char b1;
string s1 = "";
int spacecount = 0;
int j = 0;
int[] k = new int[6];
for (j = 0; j < 6; j++)
{
k[Convert.ToInt16( k1[j]) - 1] = j + 1;
}
j = 0;
for (int i = 0; i < lenth / 6; i++)
{
for (int l = 0; l < 6; l++)
{
if (a[i] == ' ')
{
spacecount++;
b1 = a[i];
}
else
{
b1 = Convert.ToChar(a[k[j % 6] -1 + i * 6]);
j++;
}
s1 += Convert.ToString(b1);
}
}
return s1;
}//置换密码解密
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -