预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

计算机密码应用基础林海2009060619 数学与软件科学学院实验报告 学期:_2011_至_2012_第__2学期2012年月日 课程名称:_专业:信息与计算科学_2009_级_06_班 实验编号:实验项目_指导教师__ 姓名:林海学号:2009060619实验成绩:___ 实验一古典密码算法 实验原理 古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。 实验目的 通过变成实现替代密码算法和置换密码算法,加深对古典密码体质的了解,为深入学习密码学奠定基础。 实验环境 运行windows或linux操作系统的pc机,具有gcc(linux)、VC(Windows)等C语言编译环境。 实验内容 4.1替代密码算法 4.1.1 根据实验远离部分对替代密码算法的介绍,创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。 替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。 4.1.2 替代密码算法的远离是使用替代法进行加密,就是将明文的字符用其他字符替代后形成密文。例如字母a、b、c、d,用D、E、F、G做对应替换后形成密文。 4.1.3代码 #include<stdio.h> #include<math.h> #include<string.h> #defineN500 intmain() { /*--------------------------------*/ inti=0,k,m,n,l; charstr1[N],str2[N];/*C=M+K...Kiskey...*/ clrscr(); /*--------------------------------*/ printf("Thisisacodepasswordprogram......\n"); printf("Pleaseinputproclaimedinwriting(M)::\n"); gets(str1);/*输入要加密的明文M*/ printf("Pleaseinputthekey(K)(int)::\n"); scanf("%d",&k);/*输入密钥K*/ m=strlen(str1);/*测试明文的长度*/ printf("TheMlengthis%d\n",m); printf("\n*\n*\n*\n***\n*\n"); printf("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); printf("%c",l); str2[i]=l; } elseif(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\nTheClengthis%d",strlen(str2)); printf("\n\n*\n*\n*\n***\n*\n"); printf("Whentheciphertextis'%s',\nThepasswordprogramis...::\n\n",str2); m=strlen(str2); for(i=0;i<m;i++)/*解密过程*/ { n=(int)str2[i];/*将字符转换成ASCII*/ if(str2[i]=='')/*如果是空格,返回的也是空格*/ { printf(""); } elseif(n>96&&n<123)/*对小写进行解密*/ { n=(n-97-k)%26; if(n<0) n=26+n; l=(char)(n+97); printf("%c",l); } elseif(n>64&&n<91)/*对大写进行解密*/ { n=(n-65-k)%26; if(n<0) n=26+n; l=(char)(n+97); prin