HILL加密算法的C语言实现

来源:互联网 发布:switch case用法 java 编辑:程序博客网 时间:2024/05/01 08:09
找到一个HILL加密算法,做了一个简单的修改,源码如下:
 #include<stdio.h> #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<N;i++) for(j=0;j<N;j++) scanf("%d",&key[i][j]); printf("\n"); }---------------------------------------------------------------------------------------------------------------- void hill() //Hill加密算法{int i,j; for(i=0;i<N;i++){ //矩阵的乘法for(j=0;j<N;j++){ //计算转换依据,0~25对应a~z ciphertext[i]+=key[i][j]*(int)(plaintext[j]-'a'); ciphertext[i]%=26; } } printf("\n"); }----------------------------------------------------------------------------------------------------------------- void printCipherText() //输出加密后的密文{int i; printf("加密后的密文是:");for(i=0;i<N;i++) //把参与计算后是整数强制转换成对应的字符printf("%c",(char)(ciphertext[i]+'a')); printf("\n"); }------------------------------------------------------------------------------------------------------------------- void main() { getPlainText(); //明文getKey(); //密钥hill(); //加密printCipherText(); //密文}


0 0