else {ch2[k]=ch[m1][n2]; ch2[k+1]=ch[m2][n1]; } } } cout<<\加密后所得到的密文是:\ for(k=0;k //解密算法 void decrypt() { const int N=100; char letters[26]=\用于填充矩阵 int flag[25]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //标记字母是否已在矩阵中,与letters数组对应 char ch[5][5];//5X5矩阵 char ch1[N];//密钥 char ch2[N];//密文 int len='a'-'A'; int flg=1; cout<<\输入密钥:\ cin>>ch1; while(flg==1) { for(int i=0;i if(flg==1) { for(i=0;i { if(ch1[i]=='J')ch1[i]='I'; } - 6 - i=0;int j=0; //把密钥中的字母填入到矩阵中,并把该字母标记为已用 for(int k=0;k for( k=0;k<25;k++)//按字母表顺序把未用字母依次填入到矩阵中 { if(flag[k]==0) { ch[i][j]=letters[k]; flag[k]=1; if(j<4)j++; else{i++;j=0;} } } cout<<\密钥填充后的矩阵为: \for(i=0;i<5;i++) for(j=0;j<5;j++) { cout< - 7 - ch2[k]=ch2[k]-len; } for( k=0;k for( k=0;k - 8 - m2=m2%5; if(n1>4){n1=n1%5;m1=m1+1;} if(n2>4){n2=n2%5;m2=m2+1;} if(m1==m2) {ch2[k]=ch[m1][(n1+4)%5]; ch2[k+1]=ch[m2][(n2+4)%5]; } else { if(n1==n2) { ch2[k]=ch[(m1+4)%5][n1]; ch2[k+1]=ch[(m2+4)%5][n2]; } else { ch2[k]=ch[m1][n2]; ch2[k+1]=ch[m2][n1]; } } } cout<<\解密后所得到的明文是:\ for(k=0;k else break; } } 四. 测试情况: ____________________________________________ | | | 多表代换密码Playfair的实现 | | 欢迎使用本程序 | |____________________________________________| ____________________________ | 选择你所需要的操作: | | 1.为字符串加密 | | 2.为字符串解密 | | 3.结 束 程 序 | |___________________________| 选择操作:1 - 9 - __________________________________________ | 加密结束 | |_________________________________________| 输入密钥:123 请重新选择操作: ____________________________ | 选择你所需要的操作: | | 1.为字符串加密 | | 2.为字符串解密 | | 3.结 束 程 序 | |___________________________| 选择操作:1 __________________________________________ | 加密结束 | |_________________________________________| 输入密钥:monarchy 密钥填充后的矩阵为: M O N A R C H Y B D E F G I K L P Q S T U V W X Z 请输入明文:sunhongguo 输入无关字符:x 经过处理后的明文为:SU NH ON GX GU OX 其最终长度为:12 加密后所得到的密文是:LX OY NA IW EW AV ____________________________ | 选择你所需要的操作: | | 1.为字符串加密 | | 2.为字符串解密 | | 3.结 束 程 序 | |___________________________| 选择操作:2 __________________________________________ | 解密结束 | |_________________________________________| 输入密钥:monarchy 密钥填充后的矩阵为: M O N A R C H Y B D E F G I K L P Q S T U V W X Z - 10 - 请输入密文:sun 字符串不能为奇数个!请重新输入。 请输入密文:sunhongg 同一分组中不能出现相同字符!请重新输入。 请输入密文:lxoynaiwewav 解密后所得到的明文是:SU NH ON GX GU OX ____________________________ | 选择你所需要的操作: | | 1.为字符串加密 | | 2.为字符串解密 | | 3.结 束 程 序 | |___________________________| 选择操作:9 无该项操作,请重来: ____________________________ | 选择你所需要的操作: | | 1.为字符串加密 | | 2.为字符串解密 | | 3.结 束 程 序 | |___________________________| 选择操作:rytery 无该项操作,请重来: ____________________________ | 选择你所需要的操作: | | 1.为字符串加密 | | 2.为字符串解密 | | 3.结 束 程 序 | |___________________________| 选择操作:3 __________________________________________ | 程序结束,谢谢您的使用! ^_^ | |_________________________________________| 请按任意键继续. . . 五. 总结 Playfair加密与解密过程是一样的,本程序在最初设计时未考虑容错能力,经老师指导,做简单修改后,已经具备容错能力,详细测试情况见四。 - 11 -
多表代换密码playfair的实现(2)
2019-03-03 18:40
多表代换密码playfair的实现(2).doc
将本文的Word文档下载到电脑
下载失败或者文档不完整,请联系客服人员解决!