匿名用户
1级
2011-07-19 回答
花了些时间写的,希望对你有帮助~
#include
#define N 3 //可加密的字符串长度
char plaintext[N]=; //明文,输入时输入字符,参与运算时强制转换成整数
int ciphertext[N]=; //密文,保存成整数,输出时强制转换成字符
int key[N][N]; //密钥矩阵
void getPlainText() //获得明文字符串
{
printf("请输入明文:");
scanf("%s",plaintext);
printf("\n");
}
void getKey() //输入密钥矩阵
{
int i,j;
printf("请输入加密矩阵:\n");
for(i=0;i
for(j=0;j
scanf("%d",&key[i][j]);
printf("\n");
}
void hill() //Hill加密算法
{
int i,j;
for(i=0;i
for(j=0;j
ciphertext[i]+=key[i][j]*(int)(plaintext[j]-'a');
ciphertext[i]%=26;
}
}
printf("\n");
}
void printCipherText() //输出加密后的密文
{
int i;
printf("加密后的密文是:");
for(i=0;i
printf("%c",(char)(ciphertext[i]+'a'));
printf("\n");
}
void main()
{
getPlainText(); //明文
getKey(); //密钥
hill(); //加密
printCipherText(); //密文
}