多表代换密码playfair的实现(2)

2019-03-03 18:40

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'z'||ch1[i]<'a') { cout<<\请重新选择操作:\ flg=0;break; } else ch1[i]=ch1[i]-len; }

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<>ch2; for(int k=0;k='a')

- 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).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:海南省农村信用社小额信贷业务考核办法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: