信息安全 实验一 古典密码算法C语言

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息安全实验报告

课程名称: _ 专业:计算机科学与技术 _2010_级_02班

实验编号:实验项目_ 指导教师_ _

姓名:闫斌学号: 2010012854 实验成绩:___

实验一古典密码算法

实验名称:古典密码算法

实验类型: 设计性实验

学时:4

适用对象: 信息安全

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

#include

#include

#define N 500

int main()

{

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

int i=0,k,m,n,l;

char str1[N],str2[N]; /*C=M+K...K is key...*/

clrscr();

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

printf("This is a code password program......\n");

printf("Please input proclaimed in writing(M)::\n");

gets(str1);/*输入要加密的明文M*/

printf("Please input the key(K)(int)::\n");

scanf("%d",&k);/*输入密钥K*/

m=strlen(str1);/*测试明文的长度*/

printf("The M length is %d\n",m);

printf("\n *\n *\n *\n***\n *\n");

printf("ciphertext(C) is ::\n\n");

for(i=0;i

{

n=(int)str1[i];/*将字符转换成ASCII*/

if(str1[i]==' ')/*如果字符串中出现空格返回空格*/

{

printf(" ");

str2[i]=str1[i];

}

else if(n>96&&n<123)/*对小写进行加密*/

{

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

if(n<0)

n=26+n;

l=(char)(n+97);

printf("%c",l);

str2[i]=l;

}

else if(n>64&&n<91)/*对大写进行加密*/

{

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

if(n<0)

n=26+n;

l=(char)(n+97);

printf("%c",l);

str2[i]=l;

}

}

str2[i]='\0';

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

printf("\n\nThe C length is %d",strlen(str2));

printf("\n\n *\n *\n *\n***\n *\n");

printf("When the ciphertext is '%s',\nThe password program is...::\n\n",str2);

m=strlen(str2);

for(i=0;i

{

n=(int)str2[i];/*将字符转换成ASCII*/

if(str2[i]==' ')/*如果是空格,返回的也是空格*/

{

printf(" ");

}

else if(n>96&&n<123)/*对小写进行解密*/

{

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

if(n<0)

n=26+n;

l=(char)(n+97);

printf("%c",l);

}

else if(n>64&&n<91)/*对大写进行解密*/

{

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

if(n<0)

n=26+n;

l=(char)(n+97);

printf("%c",l);

}

}

str1[i]='\0';

getch();

return 0;

}

4.1.4 运行结果

相关文档
最新文档