信息安全 实验一 古典密码算法C语言Word文件下载.doc

上传人:b****1 文档编号:13078401 上传时间:2022-10-04 格式:DOC 页数:8 大小:206.50KB
下载 相关 举报
信息安全 实验一 古典密码算法C语言Word文件下载.doc_第1页
第1页 / 共8页
信息安全 实验一 古典密码算法C语言Word文件下载.doc_第2页
第2页 / 共8页
信息安全 实验一 古典密码算法C语言Word文件下载.doc_第3页
第3页 / 共8页
信息安全 实验一 古典密码算法C语言Word文件下载.doc_第4页
第4页 / 共8页
信息安全 实验一 古典密码算法C语言Word文件下载.doc_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

信息安全 实验一 古典密码算法C语言Word文件下载.doc

《信息安全 实验一 古典密码算法C语言Word文件下载.doc》由会员分享,可在线阅读,更多相关《信息安全 实验一 古典密码算法C语言Word文件下载.doc(8页珍藏版)》请在冰豆网上搜索。

信息安全 实验一 古典密码算法C语言Word文件下载.doc

1.实验原理

古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。

它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。

下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。

2.实验目的

通过变成实现替代密码算法和置换密码算法,加深对古典密码体质的了解,为深入学习密码学奠定基础。

3.实验环境

运行windows或linux操作系统的pc机,具有gcc(linux)、VC(Windows)等C语言编译环境。

4.实验内容

4.1替代密码算法

4.1.1

根据实验远离部分对替代密码算法的介绍,创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。

替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。

4.1.2

替代密码算法的远离是使用替代法进行加密,就是将明文的字符用其他字符替代后形成密文。

例如字母a、b、c、d,用D、E、F、G做对应替换后形成密文。

4.1.3代码

#include<

stdio.h>

math.h>

string.h>

#defineN500

intmain()

{

/*--------------------------------*/

inti=0,k,m,n,l;

charstr1[N],str2[N];

/*C=M+K...Kiskey...*/

clrscr();

printf("

Thisisacodepasswordprogram......\n"

);

Pleaseinputproclaimedinwriting(M):

:

\n"

gets(str1);

/*输入要加密的明文M*/

Pleaseinputthekey(K)(int):

scanf("

%d"

&

k);

/*输入密钥K*/

m=strlen(str1);

/*测试明文的长度*/

TheMlengthis%d\n"

m);

\n*\n*\n*\n***\n*\n"

ciphertext(C)is:

\n\n"

for(i=0;

i<

m;

i++)/*加密的过程*/

{

n=(int)str1[i];

/*将字符转换成ASCII*/

if(str1[i]=='

'

)/*如果字符串中出现空格返回空格*/

{

printf("

"

str2[i]=str1[i];

}

elseif(n>

96&

&

n<

123)/*对小写进行加密*/

n=(n-97+k)%26;

if(n<

0)

n=26+n;

l=(char)(n+97);

%c"

l);

str2[i]=l;

64&

91)/*对大写进行加密*/

n=(n-65+k)%26;

printf("

}

str2[i]='

\0'

;

\n\nTheClengthis%d"

strlen(str2));

\n\n*\n*\n*\n***\n*\n"

Whentheciphertextis'

%s'

\nThepasswordprogramis...:

str2);

m=strlen(str2);

i++)/*解密过程*/

n=(int)str2[i];

if(str2[i]=='

)/*如果是空格,返回的也是空格*/

printf("

123)/*对小写进行解密*/

n=(n-97-k)%26;

if(n<

91)/*对大写进行解密*/

n=(n-65-k)%26;

str1[i]='

getch();

return0;

}

4.1.4运行结果

4.2置换密码

4.2.1

根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。

4.2.2

置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。

置换密码有时又称为换位密码。

矩阵换位法是实现置换密码的一种常用方法。

它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。

4.2.3代码

#defineN100

/*----------------------------*/

inti,j,lenK,lenM,m,n,temp;

intT[N];

charK[N],M[N],C[N],Temp1[N],Temp2[N],Temp3[N];

Thisisasubstitutioncipher...\n"

PleaseinputtheM:

/*输入明文M*/

gets(M);

PleaseinputtheK:

gets(K);

lenK=strlen(K);

lenM=strlen(M);

/*测设长度*/

m=lenM/lenK;

/

n=lenK;

/*定义矩阵的长和宽*/

lenK;

i++)/*对密钥进行数字排序*/

temp=0;

for(j=0;

j<

j++)

if((int)K[i]<

(int)K[j])

{

temp+=1;

}

T[i]=lenK-temp;

printf("

%d"

T[i]);

/*输出各字符对应的数字顺序*/

\n\nFirst........\n\n"

i++)/*根据密钥将明文排列成矩阵*/

n;

Temp1[i*lenK+j]=M[i*lenK+j];

%c"

Temp1[i*lenK+j]);

Temp1[lenM]='

\nSecond........\n\n"

/*进行第一次置换*/

i++)

Temp2[j*lenK+i]=Temp1[j*lenK+T[i]-1];

Temp2[lenM]='

Temp2[i*lenK+j]);

/*-------------------------------*/

\nThird.......\n\n"

/*进行第二次置换*/

Temp3[j*lenK+i]=Temp2[j*lenK+T[i]-1];

Temp3[lenM]='

Temp3[i*lenK+j]);

/*-----------------------------*/

Thesubstitutioncipheris...\n"

/*输出结果*/

for(j=0;

for(i=0;

4.2.4运行结果

5.总结

通过此次实验,对古典密码算法有了进一步的了解,同时也在过程当中学习到了如何更好的完善一个问题的求解过程。

这次的实验还可以通过MATLAB来完成。

在置换密码的算法中,未能完成解密算法,但是我会继续完成的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1