信息安全实验报告_实验报告信息安全
信息安全实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“实验报告信息安全”。
《信息安全》实验报告
班级:
姓名:
学号:
1. 实验题目:置换密码技术实现程序开发 2. 实验目的:通过置换密码算法的实现,进一步掌握置换密码算法的原理,为今后的工程应用打下坚实的基础。
3. 实验原理:置换密码亦称为换位密码。置换只不过是一个简单的换位。每个置换都可以用一个置换矩阵Ek来表示。每个置换都有一个与之对应的逆置换Dk。置换密码的特点是仅有一个发送方和接收方知道的加密置换(用于加密)和对应的逆置换(用于解密)。它是对明文L长字母组中的字母位置进行重新排列,而每个字母本身并不改变。令明文为 mm1m2mL。令置换矩阵所决定的置换为,则 加密置换 CEk(c1c2cL)m(1)m(2)m(L)解密置换 dDk(c1(1)1(2)cc1(L))
例,给定明文为tba simpodst yoibje trqnspbsition cipderk,将明文分成长为L=5的段,m1=tbasi, m2=mpods m3=tyo m4=ibjet,m5=rqnsp, m6=bsiti m7=oncip m8=derkz
最后一段长不足5,加添一个字母z。将隔断的字母序号按下述置换矩阵进行换位:
Ek= 0 1 2 3 44 3 0 2
得到密文如下
STIAB DMSOP STSOY EITJB SRPNQ TBIIS IOPCN KDZRE
利用下述置换矩阵:
Dk=0 1 2 3 40 4 2 1
可将密文恢复为明文。
L=5时可能的置换矩阵总数为5!=120,一般为L!个。可以证明,在给定L下所有的置换矩阵构成一个L!对称群。4. 实验代码
void Permutation()/*置换密码*/ {
char c[100], *q;
int *key, len, m, i, j=0;
system(“cls”);
printf(“********Permutation Cipher(置换密码)********nPlease input primal sentence(请输入最初的明文): ”);
gets(c);
strcpy(c, strupr(c));
len = strlen(c);
for(i=0;i
{
if(c[i]90)
{
for(j=i;j
c[j] = c[j+1];
len--;
}
}
c[len] = ' ';
printf(“Input the length of the key: ”);
scanf(“%d”, &m);
key =(int*)malloc(m*sizeof(int));
q =(char *)malloc(len*sizeof(int));
printf(“Input the key: ”);
for(i=0;i
{
scanf(“%d”, key+i);
key[i]--;
}
getchar();
for(i=0;i
{
j =(i/m)*m;
q[i] = c[*(key+i%m)+j];
}
q[i] = ' ';
printf(“Result is: %sn”, q);
for(i=0, j=0;i
{
j =(i/m)*m;
c[*(key+i%m)+j] = q[i]+32;
}
c[len] = ' ';
printf(“After translated the sentence,we can see the primal sentence as follow:n%sn”, c);
printf(“Pre any key to return(按任何键返回)...”);
free(key);
free(q);
getch();}
int main(){
char i = '0';
system(“cls”);
while(i!='5')
{
system(“cls”);
printf(“********Pre 1~5 to choose(请按1~5选择):********n”);
printf(“1.Shift Cipher(移位密码)n2.Affine Cipher(仿射密码)n3.Vigenere Cipher(维吉利亚密码)n4.Permutation Cipher(置换密码)n5.Exit(退出)n”);
i = getch();
if(i=='1')
Shift();
else if(i=='2')
Affine();
else if(i=='3')
Vigenere();
else if(i=='4')
Permutation();
else if(i=='5')
break;
} system(“pause”);return 0;
5.实验总结:通过这次上机实验,我了解道常用置换矩阵的特点和作用,它具有很高的安全性和可靠性,然而由于我对置换矩阵算法了解不够深入,理解不够透彻,以至于出现了很多麻烦,幸运的是经过老师和同学的指点,我成功地解决了上机遇到的各种问题。