希尔(Hill)密码(C语言)
简介
是运用基本矩阵论原理的替换密码,每个字母当作26进制数字:A=0, B=1, C=2… 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果mod26。用作加密的矩阵(即密匙)必须是可逆的,否则就不可能译码。只有矩阵的行列式和26互质,才是可逆的。
C语言实现
#include
#include
#define MAX 60
int main()
{
int K1[2][2] = {0}, K2[2][2] = {0};
int Temp1[2] = {0}, Temp2[2] = {0};
char text[MAX] = {0},result[MAX] = {0};
int T1[MAX] = {0}, T2[MAX] = {0};
int len, flag=0, temp, temp1, i, j, num=0;
/**欢迎**/
printf("--------欢迎使用Hill密码-----------\n");
printf("请填写明文或者密文\n");
scanf("%[^\n]",text);
printf("请选择加密方式,输入1加密,输入2解密\n");
scanf("%d",&num);
printf("请输入密钥k(以空格分开的数组)\n");
for(i=0; i<2; i++)