置换密码.docx
- 文档编号:11841838
- 上传时间:2023-04-05
- 格式:DOCX
- 页数:10
- 大小:37.34KB
置换密码.docx
《置换密码.docx》由会员分享,可在线阅读,更多相关《置换密码.docx(10页珍藏版)》请在冰豆网上搜索。
置换密码
实验3置换密码
一、实验目的
学习常见的古典密码学算法,通过编程实现置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。
二、实验原理
古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。
它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。
下面介绍另一种常见的具有代表性的古典密码算法----置换密码。
置换密码算法的原理是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。
置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。
它将明文中的字母按照给定的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。
例如,明文为attackbeginsatfive,密钥为cipher,将明文按照每行6个字母的形式排在矩阵中,形成如下形式:
根据密钥cipher中各个字母在字母表中出现的先后顺序,给定一个置换:
根据上面的置换,将原有居住中的字母按照第1列、第4列、第5列、第3列、第2列、第6列的顺序排列,则有下面的形式:
从而得到密文:
abatgftetcnvaiikse
其解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。
三、实验所需仪器、设备
运行Windows操作系统的PC机,具VC++(Windows)等C语言编译环境。
四、实验内容和要求
1.根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。
2.要求上述密码算法最后的实现程序提供加密和解密两个接口:
intencrypt()和intdecrypt(),当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR。
五.实验报告要求
要求提供算法实现程序和实验测试结果(用截图)。
加密源程序
importjava.util.Scanner;
publicclassReplace_encryption{
Stringstr_1="attackbeginsatfive";//明文字符串
Stringstr_2="cipher";//密钥
intlen_2=str_2.length();//密钥长度
intlen_1=str_1.length();//明文的长度
intlen_3=len_1/len_2;
intcount=0;
int[]in=newint[len_2];
char[]ch;
char[][]ch_1=newchar[len_3][len_2];
char[][]ch_2=newchar[len_3][len_2];
publicchar[][]Replace(){
for(inti=0;i str_1.getChars(count,count+len_2,ch_1[i],0); count=count+len_2; } System.out.println("明文: "); for(inti=0;i for(intj=0;j System.out.print(ch_1[i][j]+""); } } System.out.println(); for(inti=0;i for(intj=1;j<=6;j++){ switch(j){ case1: { ch_2[i][0]=ch_1[i][0]; break; }//1 case2: { ch_2[i][1]=ch_1[i][3]; break; }//4 case3: { ch_2[i][2]=ch_1[i][4]; break; }//5 case4: { ch_2[i][3]=ch_1[i][2]; break; }//3 case5: { ch_2[i][4]=ch_1[i][1]; break; }//2 case6: { ch_2[i][5]=ch_1[i][5]; break; }//6 } } } returnch_2; } publicvoidShow(char[][]ch_3){ in[0]=1; in[1]=4; in[2]=5; in[3]=3; in[4]=2; in[5]=6; System.out.println("密文: "); for(inti=0;i<6;i++){ for(intj=1;j<=6;j++){ if(j==in[i]){ for(intl=0;l<3;l++){ System.out.print(ch_3[l][in[i]-1]+""); } } } } } } 解密源程序 publicclassReplace_decryption{ Stringstr_1="abatgftetcnvaiikse";//密文字符串 Stringstr_2="cipher";//密钥 intlen_2=str_2.length();//密钥长度6 intlen_1=str_1.length();//明文的长度 intlen_3=len_1/len_2; intcount=0; int[]in=newint[len_2]; char[]ch; char[][]ch_1=newchar[len_2][len_3]; char[][]ch_2=newchar[len_2][len_3]; char[][]ch_3=newchar[len_2][len_3]; publicchar[][]Replace(){ for(inti=0;i str_1.getChars(count,count+len_3,ch_1[i],0); count=count+len_3; } System.out.println("密文: "); for(inti=0;i for(intj=0;j System.out.print(ch_1[i][j]+""); } } System.out.println(); for(inti=0;i for(intj=1;j<=6;j++){ switch(j){ case1: { ch_2[0][i]=ch_1[0][i]; break; }//1 case2: { ch_2[3][i]=ch_1[1][i]; break; }//4 case3: { ch_2[4][i]=ch_1[2][i]; break; }//5 case4: { ch_2[2][i]=ch_1[3][i]; break; }//3 case5: { ch_2[1][i]=ch_1[4][i]; break; }//2 case6: { ch_2[5][i]=ch_1[5][i]; break; }//6 } } } //for(inti=0;i //for(intj=0;j //System.out.print(ch_2[i][j]+""); //} //} returnch_2; } publicchar[][]Exchange(char[][]ch){ for(inti=0;i for(intj=1;j<=6;j++){ switch(j){ case1: { ch_3[0][i]=ch_2[0][i]; break; }//1 case2: { ch_3[3][i]=ch_2[1][i]; break; }//4 case3: { ch_3[4][i]=ch_2[2][i]; break; }//5 case4: { ch_3[2][i]=ch_2[3][i]; break; }//3 case5: { ch_3[1][i]=ch_2[4][i]; break; }//2 case6: { ch_3[5][i]=ch_1[5][i]; break; }//6 } } } //for(inti=0;i //for(intj=0;j //System.out.print(ch_3[i][j]+""); //} //} returnch_3; } publicvoidShow(char[][]ch_3){ System.out.println("明文: "); for(inti=0;i for(intj=0;j System.out.print(ch_3[j][i]+""); } } } } 测试源程序 publicclassTest{ publicstaticvoidmain(String[]args){ char[][]ch1; char[][]ch2; char[][]ch3; System.out.println("*****************加密*****************"); Replace_encryptionre=newReplace_encryption(); ch1=re.Replace(); re.Show(ch1); System.out.println(); System.out.println("*****************解密*****************"); Replace_decryptionrd=newReplace_decryption(); ch2=rd.Replace(); ch3=rd.Exchange(ch2); rd.Show(ch3); } } 欢迎您的下载, 资料仅供参考! 致力为企业和个人提供合同协议,策划案计划书,学习资料等等 打造全网一站式需求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 置换 密码
![提示](https://static.bdocx.com/images/bang_tan.gif)