置换密码Word下载.docx
- 文档编号:21213871
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:9
- 大小:17.13KB
置换密码Word下载.docx
《置换密码Word下载.docx》由会员分享,可在线阅读,更多相关《置换密码Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
k
b
e
g
in
s
f
iv
根据密钥cipher中各个字母在字母表中出现的先后顺序,给定一个置换:
123456
f=I1
J45326^
根据上面的置换,将原有居住中的字母按照第1列、第4列、第5列、第3列、第
2列、第6列的顺序排列,则有下面的形式:
aact
bing
aivf
从而得到密文:
abatgftetcnva
i
ikse
其解密过程是根据密钥的字母数作为列数,
将密文按照列、行的顺序写出,再根据
由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。
三、实验所需仪器、设备
运行Windows操作系统的PC机,具VC++(Windows)等C语言编译环境。
四、实验内容和要求
1.根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,
编写置换密码算法的实现程序,实现加密和解密操作。
2.要求上述密码算法最后的实现程序提供加密和解密两个接口:
intencrypt()
和intdecrypt(),当加密或者解密成功时返回CRYPT_OK失败时返回CRYPT_ERRQR
5.实验报告要求
要求提供算法实现程序和实验测试结果(用截图)。
加密源程序
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<
len_3;
i++){//字符串转换为字符数组
str_1.getChars(count,count+len_2,ch_1[i],0);
count=count+len_2;
i++){
for(intj=0;
j<
len_2;
j++){
System.out.print(ch_1[i][j]+"
"
);
}
System.out.println();
i++){//置换
for(intj=1;
=6;
switch(j){
case1:
{
ch_2[i][0]=ch_1[i][0];
break;
}//1
case2:
ch_2[i][1]=ch_1[i][3];
case3:
ch_2[i][2]=ch_1[i][4];
}//5
case4:
ch_2[i][3]=ch_1[i][2];
}//3
case5:
ch_2[i][4]=ch_1[i][1];
}//2
case6:
ch_2[i][5]=ch_1[i][5];
}//6
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("
密文:
);
6;
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="
//
密钥
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;
len_2;
i++){//字符串转换为字符数组
str_1.getChars(count,count+len_3,ch_1[i],0);
count=count+len_3;
System.out.println("
密文:
for(intj=0;
len_3;
System.out.print(ch_1[i][j]+"
System.out.println();
i++){//置换
for(intj=1;
switch(j){
ch_2[0][i]=ch_1[0][i];
break;
ch_2[3][i]=ch_1[1][i];
}//4
ch_2[4][i]=ch_1[2][i];
ch_2[2][i]=ch_1[3][i];
ch_2[1][i]=ch_1[4][i];
ch_2[5][i]=ch_1[5][i];
//for(inti=0;
//for(intj=0;
returnch_2;
publicchar[][]Exchange(char[][]ch){
ch_3[0][i]=ch_2[0][i];
ch_3[3][i]=ch_2[1][i];
ch_3[4][i]=ch_2[2][i];
ch_3[2][i]=ch_2[3][i];
ch_3[1][i]=ch_2[4][i];
ch_3[5][i]=ch_1[5][i];
returnch_3;
publicvoidShow(char[][]ch_3){
System.out.println("
明文:
System.out.print(ch_3[j][i]+"
测试源程序
publicclassTest{
publicstaticvoidmain(String[]args){
char[][]ch1;
char[][]ch2;
char[][]ch3;
Replace_encryptionre=newReplace_encryption();
ch1=re.Replace();
re.Show(chl);
System.out.println(”*****************
解密
*****************“
Replace_decryptionrd=newReplace_decryption();
ch2=rd.Replace();
ch3=rd.Exchange(ch2);
rd.Show(ch3);
Pnobemsfa1JavadocDecarationConsole:
ProectMigration
<
terminated>
Test[JamaApplication]C:
\ProgramFiles\Java\jdk1.8.0_40\bin\javaw.exe
賣賣賣■賣竟竄■賣:
匱賣■賣賣貢■賣:
加密•賣賣f盍匱賣•賣賣w盍賣賣■
明文:
attackbeginsatfive密文:
abatgftetcnvaiikseabatgftetcnvoiikse明文:
attackbeginsatfive
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 置换 密码