#include #include void main() { int i,j,k,p,q,s,t,m,n; char a[100],b[120],r[120]; char c[6][5]={{'c','i','p','h','e'},{'r','a','b','d','f'},{'g','k','l','m','n'},{'o','q','s','t','u'},{'v','w','x','y','z'}}; printf(\"用于加密的5×5变换矩阵为:\\n\"); printf(\"%s\ printf(\"\\n\\n\"); printf(\"请输入需要加密的字符块:\\n\"); scanf(\"%s\ printf(\"\\n\"); m=0; for(i=0;i<100;i++) { if(a[i]!='\\0') if(a[i]!=a[i+1] && a[i+1]!='\\0') { b[m]=a[i]; m++; b[m]=a[i+1]; i++; m++; } else if(a[i+1]=='\\0') { b[m]=a[i]; m++; b[m]='i'; /*若配对完之后,最后一个字母无相应的配对字符,则令其与字符‘对。*/ m++; break; } else { b[m]=a[i]; m++; b[m]='x'; i’配 m++; } else break; } b[m]='\\0'; printf(\"修改后的明文为:\\n\"); printf(\"%s\ printf(\"\\n\\n\"); p=s=5; n=0; for(i=0;i<60;i++) { if(b[2*i]!='\\0') { for(j=0;j<5;j++) for(k=0;k<5;k++) { if(b[2*i]==c[j][k]) { p=j; q=k; } if(b[2*i]=='j') { p=0; q=1; } if(b[2*i+1]==c[j][k]) { s=j; t=k; } if(b[2*i+1]=='j') { s=0; t=1; } if(p<5 && s<5) { if(p==s) { if(q<4 && t<4) { r[n]=c[p][q+1]; n++; r[n]=c[s][t+1]; n++; } else if(q==4 && t<4) { r[n]=c[p][0]; n++; r[n]=c[s][t+1]; n++; } else { r[n]=c[p][q+1]; n++; r[n]=c[s][0]; n++; } } else if(q==t) { if(p<4 && s<4) { r[n]=c[p+1][q]; n++; r[n]=c[s+1][t]; n++; } else if(p==4 && s<4) { r[n]=c[0][q]; n++; r[n]=c[s+1][t]; n++; } else { r[n]=c[p+1][q]; n++; r[n]=c[0][t]; n++; } } else { r[n]=c[p][t]; n++; r[n]=c[s][q]; n++; } p=5; s=5; } } } else break; } r[n]='\\0'; printf(\"原有的需要加密的明文为:\\n\"); printf(\"%s\ printf(\"\\n\\n\"); printf(\"将原文进行修改后得到的字符串为:\\n\"); printf(\"%s\ printf(\"\\n\\n\"); printf(\"用于加密的5×5变换矩阵为:\\n\"); printf(\"%s\ printf(\"\\n\\n\"); printf(\"经过5×5变换矩阵转换后得到的密文为:\\n\"); printf(\"%s\ printf(\"\\n\\n\"); } 若经过配对后的字符串个数为偶数结果如下: 若在相同的两个字符之间加上’x’字符之后,字符块的个数为奇数,则令字符‘与最后一个字符配对,结果如下: i’ 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务