凯撒加密解密实验报告

合集下载

计算机网络技术实验报告四

计算机网络技术实验报告四

天津理工大学实验报告学院(系)名称:F -FGHIJKLMNOPQRSTUVWXYZ A B C D EG- G H I J K L M N O P Q R S T U V W X Y Z A B C D E FH -H I J K L M N O P Q R S T U V W X Y Z A B C D E F GI- I J K L M N O P Q R S T U V W X Y Z A B C D E F G HJ -J K L M N O P Q R S T U V W X Y Z A B C D E F G H IK -K L M N O P Q R S T U V W X Y Z A B C D E F G H I JL -L M N O P Q R S T U V W X Y Z A B C D E F G H I J KM -M N O P Q R S T U V W X Y Z A B C D E F G H I J K LN -N O P Q R S T U V W X Y Z A B C D E F G H I J K L MO -O P Q R S T U V W X Y Z A B C D E F G H I J K L M NP -P Q R S T U V W X Y Z A B C D E F G H I J K L M N OQ -Q R S T U V W X Y Z A B C D E F G H I J K L M N O PR -R S T U V W X Y Z A B C D E F G H I J K L M N O P QS -S T U V W X Y Z A B C D E F G H I J K L M N O P Q RT -T U V W X Y Z A B C D E F G H I J K L M N O P Q R SU -U V W X Y Z A B C D E F G H I J K L M N O P Q R S TV -V W X Y Z A B C D E F G H I J K L M N O P Q R S T UW -W X Y Z A B C D E F G H I J K L M N O P Q R S T U VX -X Y Z A B C D E F G H I J K L M N O P Q R S T U V WY -Y Z A B C D E F G H I J K L M N O P Q R S T U V W XZ -Z A B C D E F G H I J K L M N O P Q R S T U V W X Y加密方法:维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。

《信息安全》实验报告1 编程实现恺撒密码

《信息安全》实验报告1 编程实现恺撒密码

《信息安全》实验报告(1)实验名称:________________ 指导教师:___________ 完成日期:________________ 专 业:________________ 班 级:___________ 姓 名:________________一、实验目的:掌握典型的单表代换和多表代换的加密方法的实现细节。

二、实验内容:1、编程实现凯撒密码的加密和解密。

要求:既可以进行加密转换,也可以进行解密转换。

程序参考界面如右所示。

可以使用任何编程工具,能处理英文即可。

2、(选做)编程实现维吉尼亚密码的加密和解密。

要求:既可以进行加密转换,也可以进行解密转换。

程序参考界面如右所示。

可以使用任何编程工具,能处理英文即可。

三、程序设计说明:(实现步骤、算法设计思路、流程图等)凯撒密码加密算法:#include <stdio.h>int main(){char P[100];/*定义明文长度*/int K=3,i;printf("请输入明文:\n"); /*输入明文*/gets(P); /* 接受明文*/for(i=0;P[i]!='\0';i++) { /*逐个判断字母的大小*/if(P[i]>='a'&&P[i]<='z') /*小写字母 */P[i]=(P[i]-'a'+K)%26+'a';else if(P[i]>='A'&&P[i]<='Z')/*大写字母 */P[i]=(P[i]-'A'+K)%26+'A';else P[i]=' ';/*如果不是字母,转换为空格*/}printf("加密后 :\n%s\n",P);/*输出密文*/getch();return 0;}凯撒密码的实现 于泳海 2014-9-24 信息管理与信息系统 11级信本班 贾文丽四、实验结果与结论:(经调试正确的源程序和程序的运行结果)明文加密(密钥key=3):五、实验总结:(实验中遇到的问题及解决方法,心得体会等)在本次实验中,学会了凯撒密码的加密与解密。

凯撒密码实验报告册(3篇)

凯撒密码实验报告册(3篇)

第1篇一、实验背景凯撒密码是一种古老的加密技术,由罗马皇帝凯撒发明。

它是一种替换加密,通过将明文字母表中的字母按照一个固定的偏移量进行替换,生成密文。

凯撒密码是最简单、最广为人知的加密技术之一,其加密和解密过程都非常简单。

二、实验目的1. 理解凯撒密码的加密和解密原理;2. 掌握凯撒密码的编程实现;3. 分析凯撒密码的安全性,了解其局限性;4. 比较凯撒密码与其他加密算法的差异。

三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm四、实验内容1. 凯撒密码加密和解密算法实现2. 凯撒密码安全性分析3. 凯撒密码与其他加密算法的比较五、实验步骤1. 凯撒密码加密和解密算法实现(1)定义凯撒密码加密和解密函数```pythondef caesar_encrypt(text, shift):encrypted_text = ""for char in text:if char.isalpha():shifted = ord(char) + shiftif char.isupper():if shifted > ord('Z'):shifted -= 26elif char.islower():if shifted > ord('z'):shifted -= 26encrypted_text += chr(shifted) else:encrypted_text += charreturn encrypted_textdef caesar_decrypt(text, shift):decrypted_text = ""for char in text:if char.isalpha():shifted = ord(char) - shiftif char.isupper():if shifted < ord('A'):shifted += 26elif char.islower():if shifted < ord('a'):shifted += 26decrypted_text += chr(shifted)else:decrypted_text += charreturn decrypted_text```(2)测试凯撒密码加密和解密函数```pythonif __name__ == "__main__":text = "Hello, World!"shift = 3encrypted_text = caesar_encrypt(text, shift)decrypted_text = caesar_decrypt(encrypted_text, shift)print("Original text:", text)print("Encrypted text:", encrypted_text)print("Decrypted text:", decrypted_text)```2. 凯撒密码安全性分析凯撒密码的安全性非常低,因为其密钥空间只有26个可能的值(即字母表中的字母数量)。

实验1-1 经典密码——凯撒密码

实验1-1 经典密码——凯撒密码

上机实验报告一、实验目的:本次上机实践所涉及并要求掌握的知识点。

1、理解凯撒密码的加密、解密过程二、实验环境PC机一台三、实验内容实验一移动3位的凯撒密码:1.(1)用移动3位的凯撒密码加密“keep this secret”(2)用移动3位的凯撒密码加密你的某位老师的名字2.破译下列谜语的答案。

这些答案是用移动3位的凯撒密码来加密的。

(1)谜语:What do you call a sleeping bull?(你怎么称呼一只睡着的公牛?)答案: D EXOOGRCHU(2)谜语:What is the different between a teacher and a train?(老师与火车的区别是什么?)答案:WKH WHDFKHU VDBV “QR JXP DOORZHG”WKH WUDLQ VDBV “FKHZ FKHZ”实验二移动4位的凯撒密码:1.请解密下面伊薇写给艾比的便条,她使用的是移动4位的凯撒密码WSVVC PIX’W YWI GMTLIVW JVSQ RSA SR2.谜语:What do you call a dog at the beach ?(你怎么称呼一只在海滩上的狗?)答案(移动4位密码):E LSX HSK实验三凯撒密码破解:1.凯撒密码破解密文:NGBKGMUUJZOSK实验四用数传递信息的方法破译以下的谜语:1.谜语:Where does Thursday come before Wednesday? (哪裡的星期四是比星期三还早的?)答案: 8,13,19,7,4,3,8,2,19,8,14,13,0,17,242.谜语:What always ends everything?(什么总是能终结所有事情?)答案:19,7,4 11,4,19,19,4,17 ,6四、实验总结通过上机实践,对所学内容的某个知识点有了更深入的理解,写出一些体会、学习心得,甚至是改进意见。

凯撒加密实验报告(3篇)

凯撒加密实验报告(3篇)

第1篇一、实验目的通过本次实验,掌握凯撒加密法的原理和步骤,了解其在密码学中的应用,并能够使用Python语言实现凯撒加密和解密功能。

二、实验原理凯撒加密法是一种最简单且最广为人知的替换加密技术。

其基本原理是将明文中的每个字母按照字母表的顺序向后(或向前)移动一个固定数目的位置,从而生成密文。

例如,当偏移量为3时,明文中的A将变成D,B变成E,以此类推。

凯撒加密法的密钥是偏移量,它决定了加密过程中字母的移动方向和距离。

密钥的取值范围是1到25,表示将字母表向后移动1到25个位置。

三、实验内容1. 凯撒加密使用Python语言实现凯撒加密功能,具体步骤如下:- 定义一个函数,接收明文和密钥作为参数。

- 将明文中的每个字母按照字母表的顺序向后移动密钥指定的位置。

- 对于超出字母表范围的字母,将其转换回字母表的首部。

- 返回加密后的密文。

2. 凯撒解密使用Python语言实现凯撒解密功能,具体步骤如下:- 定义一个函数,接收密文和密钥作为参数。

- 将密文中的每个字母按照字母表的顺序向前移动密钥指定的位置。

- 对于超出字母表范围的字母,将其转换回字母表的首部。

- 返回解密后的明文。

3. 实验演示使用实验代码演示凯撒加密和解密过程,包括以下示例:- 示例1:明文为“The quick brown fox jumps over the lazy dog”,密钥为3,加密后的密文为“Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj”。

- 示例2:密文为“Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj”,密钥为3,解密后的明文为“The quick brown fox jumps over the lazy dog”。

四、实验结果与分析1. 加密效果通过实验验证,凯撒加密法能够有效地将明文转换为密文,且解密过程也能够将密文恢复为明文。

恺撒密码实验报告

恺撒密码实验报告

实验二恺撒密码一、实验目的1. 掌握Java数组的基本操作。

2.掌握String类的生成、访问、修改等基本操作;3.掌握StringBuffer类的生成、访问、修改等基本操作。

4. 掌握 Pattern和Matcher对象的用法,以及正则表达式的应用二、实验要求1.正确地定义数组;2.正确对数组元素进行赋值、排序。

3.正确使用String类的方法;4.正确使用StringBuffer类的方法。

5. 正确书写正则表达式和使用Pattern和Matcher对象三、实验环境1.计算机一台;2.JDK、MyEclipse工具软件。

四、实验内容1.编写Application程序,实现凯撒密码,输入明文自动输出相应的密文。

五、实验步骤1.处理输入,每次读入一行。

2.将该行转换为字符数组,依次处理每个字符,英文字母转换成相应的密文,其他字符(如标点符号)的密文和明文相同。

3. 整体输出该行的密文。

4. 选作:允许用户扩展凯撒密码,指定字符替换的规则,即可以输入密钥六、凯撒密码介绍凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全。

他的原理很简单,说到底就是字母于字母之间的替换。

下面让我们看一个简单的例子:“baidu”用凯撒密码法加密后字符串变为“edlgx”,它的原理是什么呢?把“baidu”中的每一个字母按字母表顺序向后移3位,所得的结果就是刚才我们所看到的密文。

七、实验结果源代码为:package youximima;import java.util.*;public class Mima {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub//Scanner s =new Scanner(System.in);System.out.println("凯萨密码!");System.out.println("请输入一串字符!");int k=1;while(k==1){System.out.println("凯撒密码法加密后的字符串为:");Scanner s =new Scanner(System.in);String c=s.nextLine();int i=c.length();if(i<=10){char a[]=c.toCharArray();System.out.println(a);for(int j=0;j<a.length;j++){ if(a[j]>='a'&&a[j]<='z')if(a[j]=='x')a[j]='a';else if(a[j]=='y')a[j]='b';else if(a[j]=='z')a[j]='c';else a[j]+=3;if(a[j]>='A'&&a[j]<='Z')if(a[j]=='X')a[j]='A';else if(a[j]=='Y')a[j]='B';else if(a[j]=='Z')a[j]='C';else a[j]+=3;}System.out.print("原文为:");System.out.println(a);}else System.out.println("密码个数超过限制范围!");System.out.println("需要继续吗? 若继续请按1, 退出按0!");int m=s.nextInt();k=m;}System.out.println("欢迎下次使用!");}}结果为:凯萨密码!请输入一串字符!凯撒密码法加密后的字符串为:alk12@#xzalk12@#xz原文为:don12@#ac需要继续吗? 若继续请按1, 退出按0! 1凯撒密码法加密后的字符串为: sjkfJKJ%^YZ密码个数超过限制范围!需要继续吗? 若继续请按1, 退出按0! 1凯撒密码法加密后的字符串为:SFJ*8^knyzSFJ*8^knyz原文为:VIM*8^nqbc需要继续吗? 若继续请按1, 退出按0! 0欢迎下次使用!。

置换密码与凯撒密码加解密程序实现

置换密码与凯撒密码加解密程序实现

昆明理工大学城市学院学生实验报告(2012 —2013 学年第 2 学期)课程名称:信息安全开课实验室:德信楼308 2013 年5月 8日、5月15日一、实验目的及内容学会置换密码、凯撒密码加解密算法的编程实现二、实验原理及基本技术路线欲加密的数据称为明文,明文经过某种加密算法后转换成密文,加密算法中使用的参数称之为加密密钥;密文经解密算法作用后形成明文,解密算法也有一个密钥,这两个密钥可以相同也可以不相同。

密文在网络传输中可能会被窃听,特别是在无线通信中,所有传输信息是外露的,但是由于窃听者不知道解密的方法,安全可得到相对保护。

密码通信的一条基本原则是,必须假定破译知道通用的加密方法,也就是说加密算法E 是公开的。

这种假设是合理的也是必要的,因为事实上任何一种加密算法都不可能做到完全的保密,其次一个加密算法在被公开之后仍要能经得起攻击才能称得上是一个合格的、强壮加密算法。

另外只有在对加密算法进行不断的研究、攻击和改进中,密码学才能得到发展。

既然加密算法是可能公开的,那么真正的秘密就在于密钥了,也就是说,密钥是必须保密的,它通常是一个字符串,并且可以按需要进行频繁的更换,因此以下将讨论是模型是加密算法是公开的且相对稳定,而作为参数的密钥是保密的,并且是易于更换的。

在这里密钥的长度很重要,因为找到了解密密钥也就破译了密码,而密钥长度越长,密钥空间就越大,破译密钥所花的时间就越长,破译的可能性就越小。

从破译者的角度来看,密码分析所面对的问题有三种主要的变型:当仅有密文而无明文时,我们称之为“只有密文”问题;当已有了一批相匹配的明文与密文时,称之为“已知明文”问题;当能够加密自已所选的明文时,称为“选择明文”。

从这三种角度来看,如密码系统仅能经得起“只有密文”的攻击还不能算是真正的安全,因为破译者完全可能从统计学的角度与一般的通信规律中猜测出一部分的明文,从而就会拥有一些相匹配的明文与密文,从而全部解密。

加密解密程序实验报告

加密解密程序实验报告

程序设计实践加密解密程序实验报告课题概述1.1课题目标和主要内容:利用MFC类或者win32编写windows程序,实现加密解密的功能。

1.2系统的主要功能:1.实现用户界面友好的操作。

2.具有对称编码体制,可以实现:i.凯撒密码:能够自定义密钥,自由输入明文,进行加密、解密,在对话框中返回加密和解密后的内容。

ii.置换密码:能够自定义密钥,自由输入明文,经矩阵变换进行加密、解密,在对话框中返回加密和解密后的内容iii.对称加密DES:用MFC调用WIN32编写的程序,在用户友好界面操作的同时显示程序加密,解密结果。

3.具有非对称编码体制:i. RSA加密解密:随机产生p,q,经检验是否互质,若不互质接着产生两个随机数,直到二者互质为止。

自动生成p,q,N及加密解密的密钥,可以自由输入明文,返回加密、解密的内容。

ii. MD5消息摘要计算:用MFC调用WIN32编写的程序,在用户友好界面操作的同时显示程序的加密结果。

4.信息隐藏技术:用LSB在图片(bmp格式,任意位置的图片)中写入信息,读取信息并显示出来,可以擦除信息。

可以自定义密钥。

5. AES加密解密:用MFC调用WIN32编写的程序,在用户友好界面操作的同时显示程序加密,解密结果。

6. 以上的所有对文字加密解密的方法(除LSB以外其余所有方法),都可以用于文件加密,解密,并能够及时保存加密,解密的信息到一个TXT文档,可以存在用户想存放的地方。

7.更多:链接了一个可加密解密,功能更为齐全的网站,若是上述方法不能满足用户需求,可以在程序运行的窗口中点击相应按钮,在联网的条件下进行在线加密解密。

一、系统设计2.1系统总体框架:2.2主要的层次逻辑为:1.界面窗口:改善设计,修正效果图:2.将书上的C++语言改用MFC适应的进行编程,实现相应功能:凯撒加解密3.或者用系统函数调用WIN32编好的程序:4.进行文件操作,加密解密后保存文件。

6.调用函数实现网页链接:2.3设计思想:(1)新建一个基于单文档的MFC应用程序,工程名称为secret。

凯撒加密解密实验报告

凯撒加密解密实验报告

《C语言课程设计》任务书所属学期:10-11-2 下达时间:2011年8月28日完成班级: D软件101【设计目的】本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。

本课程设计的目的和任务:(1)巩固和加深学生对C语言的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。

【设计内容与任务】每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。

1、以本班同学的具体数据为背景,设计一个本班同学通讯录。

实现功能:1) 通讯录编辑(添加、删除)。

2) 按不同的项进行查找。

3) 对已存在的通讯录按不同的项排序。

4) 将通讯录写入文件5) 从文件读入通讯录备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail,QQ。

2、设计一个学生成绩排名系统,该系统的主要功能如下:1) 具备对成绩的管理功能(添加、删除、排序)2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)3) 具备按学号、姓名、或课程名查询成绩的功能。

备注:成绩记录以下信息:班级,学号,姓名,课程名,成绩(百分制)。

可以用能表示学生成绩的结构体数组存储数据。

3、设计一个文件加密/解密程序,主要功能是支持简单的替换加密/解密,支持凯撒加密法(参见百度百科词条:凯撒加密法/view/4107346.htm)和ROT13加密两种加密方法。

4、设计一个简单的文件压缩/解压缩程序,例如:未压缩前的字符为"aaaccccddddd666666",则压缩以后的字符为:"3a4c5d66"。

压缩文件时需要输出压缩比,如20%。

5、设计一个万年历程序。

主要功能是能够输出任意年份或月份的日历,程序的输出的月历格式与日常生活中使用的月历格式相同,最好能够支持通过命令行参数指定要输出的年份或月份。

《MIS系统软件》实验报告_加密解密

《MIS系统软件》实验报告_加密解密
④转换加密方法
通过将明文每m个字符一组按顺序分为若干个字符串,再按照先列后行形成密文,并分析给出解密的方法。
或者通过给出一个密钥字符串,将明文按密钥字符串长度按顺序分为若干组字符串,再按照密钥字符串各个字符的顺序形成密文,并分析给出解密的方法。
3、主要仪器设备及耗材
实验室提供计算机和上网条件,C语言上机环境。
}
printf("\n加密后密文是:");
for(i=0;i<mingwen_length;i++)
printf("%c",danbiao_miwen[i]);
}
void danbiao_jiemi(char miwen[])//解密函数
{
int miwen_length= strlen(miwen),i,j;
加密过程:首先输入明文如whutmis,然后输入与明文字符数相等的密匙如iloveyu,第一个字符的密文可以求得c1=(w+i)mod26=4,,此时对应编号4的字母为E,则明文W对应的密文为E,依次类推,可以将所有明文加密得到密文esioqgm;
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
附录:(部分源代码)
主界面:
/*****************************************/
/****计算机操作系统加密解密算法实验*****/
/****姓名:王涛*****/
/****班级:信管0801班*****/
/****学号:0120803490117 *****/

作业1-凯撒密码的加密、解密和破解

作业1-凯撒密码的加密、解密和破解

作业1-凯撒密码的加密、解密和破解光信学院《网络信息安全》实验报告1班级:学号:姓名:实验时间:年月日指导教师:陈顺凡一.实验目的理解网络信息安全的基本原理,掌握基本密码技术的原理及编程能力。

二.实验原理和内容[凯撒介绍]凯撒密码(kaiser)是罗马扩张时期朱利斯"凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。

它将字母表中的字母移动一定位置而实现加密。

[加密原理]凯撒密码的加密算法极其简单。

其加密过程如下:在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。

凯撒密码的加密过程可记为如下一个变换:c≡m+k mod n (其中n为基本字符个数)同样,解密过程可表示为:m≡c-k mod n (其中n为基本字符个数)对于计算机而言,n可取256或128,m、k、c均为一个8bit 的二进制数。

显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。

当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。

.[破解原理]一篇包含字符的英文文章,其各ASCII码字符出现,都有一定的频率,下面是对Google上随意搜索到的英文文章进行分析的结果,见表:QUOTE:====================================== =========== FileName : 01.txt[1] 32: times:204[2] 101:e times:134[3] 116:t times:91[4] 105:i times:87[5] 111:o times:77[6] 108:l times:75[7] 97:a times:75[8] 110:n times:69[9] 10:times:67[10] 115:s times:63====================================== =========== FileName : php.si.source.txt[1] 32: times:576[2] 101:e times:162[3] 115:s times:153[4] 110:n times:141[5] 114:r times:138[6] 105:i times:135[7] 10:times:134[8] 116:t times:129[9] 42:* times:116[10] 111:o times:103====================================== =========== FileName : work.txt[1] 32: times:51322[2] 101:e times:30657[3] 116:t times:23685[4] 97:a times:19038[5] 111:o times:17886[6] 105:i times:16156[7] 110:n times:15633[8] 114:r times:15317[9] 115:s times:15226[10] 104:h times:12191====================================== =========== FileName : 02.txt[1] 32: times:299[2] 101:e times:217[3] 110:n times:136[4] 105:i times:133[5] 111:o times:124[6] 116:t times:116[7] 97:a times:110[8] 115:s times:98[9] 114:r times:92[10] 108:l times:82====================================== =========== FileName : 03.txt[1] 45:- times:404[2] 32: times:394[3] 101:e times:237[4] 116:t times:196[5] 114:r times:173[6] 97:a times:163[7] 105:i times:161[8] 110:n times:153[9] 111:o times:142[10] 115:s times:129====================================== =========== FileName : 04.txt[1] 32: times:326[2] 101:e times:179[3] 116:t times:106[4] 105:i times:101[5] 111:o times:96[6] 110:n times:94[7] 97:a times:92[8] 115:s times:78[9] 100:d times:61[10] 114:r times:60====================================== =========== FileName : 05.txt[1] 32: times:441[2] 101:e times:191[3] 111:o times:151[4] 116:t times:120[5] 97:a times:112[6] 110:n times:108[7] 105:i times:91[8] 114:r times:84[9] 117:u times:79[10] 115:s times:79有此分析可知,一篇英文文章中,出现较高频率的两个字符是' ' (空格) 和 'e',而且它们的ASCII码分别是32和101,差值是69。

凯撒加密

凯撒加密

班级:学号:姓名试验组别:试验日期:2009年3月16 日报告日期:2009年3 月16日成绩:报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验一凯撒密码算法实验1 实验目的通过实验熟练掌握凯撒密码算法;学会凯撒密码算法程序设计;提高C++程序设计能力;2 实验类别:验证实验■综合性实验□设计性实验□3 实验环境软件环境Windows Xp/Windows 2000Visual c++/Turbo c++ 3.0硬件系统Pentium 4 3.0G 512MRAM 计算机等4 算法原理按照a~z依次对应0~25编码,变量K存放密钥-正整数。

变量M存放一明文字符ASCII码,变量C存放M中的数据经加密后得到的一密文字符的ASCII码。

加密算法:C≡(M+K)mod 26,如此继续下去,实现逐个字符进行加密。

5 实验步骤与内容1)编写程序程序流程图:2)编辑录入#include <stdio.h>#include <string.h>#include <stdlib.h>void main(){char str1[100],str2[100];int i,k,n;printf("\t\t\t 欢迎使用凯撒加密系统");printf("\n\n\t\t\t1.加密 2.解密0.退出\n");do{printf("请选择:");scanf("%d",&n);switch(n){case 1:{printf("\n输入密钥:");scanf("%d",&k);printf("\n输入明文字符串:");scanf("%s",str1);strupr(str1);for(i=0;str1[i]!='\0';i++){if(str1[i]>(90-k))str2[i]=str1[i]-26+k;else str2[i]=str1[i]+k;}str2[i]='\0';printf("\n加密后的密文为%s\n",str2);break;}case 2:{printf("\n输入密钥:");scanf("%d",&k);printf("\n输入密文字符串:");scanf("%s",str1);strupr(str1);for(i=0;str1[i]!='\0';i++){if(str1[i]<65+k)str2[i]=str1[i]+26-k;else str2[i]=str1[i]-k;}str2[i]='\0';printf("\n明文为%s\n",str2);break;}case 0:exit(0);default:printf("\n请重新输入:\n");}}while(n);}3)记录调试及进行情况4)程序结构说明文档程序上分为两个部分,加密和解密。

凯撒密码编程实验报告(3篇)

凯撒密码编程实验报告(3篇)

第1篇一、实验目的1. 理解凯撒密码的基本原理和加密解密过程;2. 掌握C语言编程实现凯撒密码;3. 提高编程能力和密码学基础知识。

二、实验环境1. 软件工具:Visual Studio 20192. 操作系统:Windows 10三、实验内容1. 凯撒密码原理介绍凯撒密码是一种最简单的移位密码,通过将字母表中的每个字母向前或向后移动固定数量位置来进行加密和解密。

例如,密钥为3时,A会被加密为D,B会被加密为E,以此类推。

解密过程是将密文中的每个字母向前或向后移动相同的位数,恢复出明文。

2. C语言实现凯撒密码(1)加密函数```cvoid caesar_encrypt(char input, char output, int key) {int i = 0;while (input[i] != '\0') {if (input[i] >= 'A' && input[i] <= 'Z') {output[i] = ((input[i] - 'A' + key) % 26) + 'A';} else if (input[i] >= 'a' && input[i] <= 'z') {output[i] = ((input[i] - 'a' + key) % 26) + 'a';} else {output[i] = input[i];}i++;}output[i] = '\0';}```(2)解密函数```cvoid caesar_decrypt(char input, char output, int key) {int i = 0;while (input[i] != '\0') {if (input[i] >= 'A' && input[i] <= 'Z') {output[i] = ((input[i] - 'A' - key + 26) % 26) + 'A'; } else if (input[i] >= 'a' && input[i] <= 'z') {output[i] = ((input[i] - 'a' - key + 26) % 26) + 'a'; } else {output[i] = input[i];}i++;}output[i] = '\0';}```3. 测试程序```cinclude <stdio.h>include <string.h>void caesar_encrypt(char input, char output, int key) { // 加密函数}void caesar_decrypt(char input, char output, int key) { // 解密函数}int main() {char input[100], output[100];int key;printf("请输入密钥(1-25): ");scanf("%d", &key);printf("请输入明文: ");scanf("%s", input);caesar_encrypt(input, output, key);printf("加密结果: %s\n", output);caesar_decrypt(output, input, key);printf("解密结果: %s\n", input);return 0;}```四、实验结果与分析1. 实验结果(1)输入密钥为3,明文为"hello world",加密结果为"kiho world",解密结果为"hello world";(2)输入密钥为5,明文为"goodbye world",加密结果为"jvvhv world",解密结果为"goodbye world"。

加密实验报告

加密实验报告

实验报告实验课程:信息安全课程实验实验项目:凯撒密码实验时间:系:班级:姓名:学号:指导教师:同组人:实验目的:1. 简单加密方法的原理2. 凯撒密码的原理及程序的编写实验开设方式:个人或分组实验设备与环境:连网的个人计算机Windows 2000 系统平台相关知识点:凯撒密码就是单表代替密码,它的每一个明文字符都由其右边第3个(模26)字符代替(A由D代替,B由E代替,W由Z代替,X由A代替,Y由B代替,Z 由C代替)。

CAESAR密码几种变换:(1)加法变换c≡ (m + k) mod 26其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,叫密钥。

比如:data security对应数据序列4,1,20,1,19,5,3,21,18,9,20,25,当k=5时,得密文序列9,6,25,6,24,10,8,0,23,14,25,4。

(2)乘同余码:移位或等间隔抽取码,明密文之间没有一一对应关系。

(容易产生多义性)。

变换按照同余乘法进行:加密变换:C=P⨯k (mod 26)解密变换:P=C÷k (mod 26)密钥:k实验内容:1.请同学们采用一种你熟悉的语言编写通过凯撒密码原理实现的加密器。

要求:对文档中的任意几个字符能做正确的加密变换。

加密器做加法变换后仍然可以正确加密。

2.通过凯撒密码的原理实现解密器。

程序如下:#include<stdio.h>#include<math.h>#include<stdlib.h>#include<string.h>#define num 100#define clrscr() system("cls")static int c[100];char einf0(char ch,int key) /*加法加密*/{if(ch>='a'&&ch<='z')ch=(ch+key%26-'a')%26+'a';else if(ch>='A'&&ch<='Z')ch=(ch+key%26-'A')%26+'A';else if(ch>='0'&&ch<='9')ch=(ch+key%10-'0')%10+'0';return ch;}char doutf0(char ch,int key) /*乘法加密*/{if(ch>='a'&&ch<='z')ch=(ch-key%26-'a'+26)%26+'a';else if(ch>='A'&&ch<='Z')ch=(ch-key%26-'A'+26)%26+'A';else if(ch>='0'&&ch<='9')ch=(ch-key%10-'0'+10)%10+'0';return ch;}char einf1(char ch,int key,int c[]) /*加法解密*/{static int i=0;if(ch>='a'&&ch<='z'){c[i++]=(ch-'a')*(key)/26;ch=(ch-'a')*(key)%26+'a';}else if(ch>='A'&&ch<='Z'){c[i++]=(ch-'A')*(key)/26;ch=(ch-'A')*(key)%26+'A';}else if(ch>='0'&&ch<='9'){c[i++]=(ch-'0')*(key)/10;ch=(ch-'0')*(key)%10+'0';}return ch;}char doutf1(char ch,int key,int c[]) /*乘法解密*/{static int j=0;if(ch>='a'&&ch<='z')ch=((ch-'a')+(c[j++])*26)/(key)+'a';else if(ch>='A'&&ch<='Z')ch=((ch-'A')+(c[j++])*26)/(key)+'A';else if(ch>='0'&&ch<='9')ch=((ch-'0')+(c[j++])*10)/(key)+'0';return ch;}void einf_doutf_f(char* inf,int key,char* outf,int flag) /*加法,乘法调用*/ {FILE *in,*out;char ch;clrscr();if((in=fopen(inf,"r"))==NULL){printf("can not open the inf!\n");printf("press any key to exit!\n");exit(0);}if((out=fopen(outf,"w"))==NULL){printf("can not open the outf!\n");printf("press any key to exit!\n");fclose(in);exit(0);}ch=fgetc(in);while(ch!=EOF){if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9')){if(flag==1)fputc(einf0(ch,key),out);if(flag==2)fputc(doutf0(ch,key),out);if(flag==3)fputc(einf1(ch,key,c),out);if(flag==4)fputc(doutf1(ch,key,c),out);}elsefputc(ch,out);ch=fgetc(in);}fclose(in);fclose(out);}int main(){int k;int ch0;char inf[num];char outf[num];int flag;clrscr();while(1){clrscr();printf("\nplease choice the way:1:einf0 2:doutf0 3:einf1 4:doutf1:\n"); scanf("%d",&ch0);if(ch0==1){flag=1;printf("\nplease input the inf:\n");scanf("%s",inf);printf("\nplease input the key:\n");scanf("%d",&k);if(k==0)printf("error");else{printf("\nplease input the outf:\n");scanf("%s",outf);einf_doutf_f(inf,k,outf,flag);printf("\neinf is over!\n");}}else if(ch0==2){flag=2;printf("\nplease input the inf:\n");scanf("%s",inf);printf("\nplease input the key:\n"); scanf("%d",&k);if(k==0)printf("error");else{printf("\nplease input the outf:\n"); scanf("%s",outf);einf_doutf_f(inf,k,outf,flag); printf("\ndinf is over!\n");}}else if(ch0==3){flag=3;printf("\nplease input the inf:\n"); scanf("%s",inf);printf("\nplease input the key:\n"); scanf("%d",&k);if(k==0)printf("error");else{printf("\nplease input the outf:\n"); scanf("%s",outf);einf_doutf_f(inf,k,outf,flag); printf("\ndinf is over!\n");}}else if(ch0==4){flag=4;printf("\nplease input the inf:\n"); scanf("%s",inf);printf("\nplease input the key:\n"); scanf("%d",&k);if(k==0)printf("error");else{printf("\nplease input the outf:\n"); scanf("%s",outf);einf_doutf_f(inf,k,outf,flag);printf("\ndinf is over!\n"); }}else{printf("error!\n"); break;}}printf("\ngame over:\n"); }实验结果:1.原文件:2.加法加密(key=5)3.加法解密4.乘法加密(key=5)5.乘法解密。

凯撒加密解密上机实验报告

凯撒加密解密上机实验报告

计算机安全基础凯撒加密解密上机实验报告学院年级专业班学生姓名学生学号实验一凯撒加密解密凯撒密码简介:恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。

例如,当偏移量是左移3的时候(解密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。

需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。

例如:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ源代码:#include "kaisa.h"using namespace std;void Kaisa::setI(){cout << "\n请输入加密密码:";cin >> i;}void Kaisa::jiami(){char a, b, c;cout << "\n请输入明文:\t";cin >> a;b = char('z' - i%26);c = char('Z' - i%26);cout << "\n密文是:\t";while(a != '\n'){if((a <= 'z' && a >= 'a') || ( a <= 'Z' && a >='A')){ if((a <= b && a >= 'a') || ( a <= c && a >='A'))cout << char(a + i%26);if(a > c && a <= 'Z')cout << char(a + i%26 - 26);if(a > b && a <= 'z')cout << char(a + i%26 - 26);if(a == ' ')cout << " ";}elsecout << a;a = cin.get();}cout << endl;}void Kaisa::setX(){cout << "\n请输入解密密码:";cin >> i;}void Kaisa::jiemi(){char a, b, c;cout << "\n请输入密文:\t";cin >> a;b = char('a' + i%26);c = char('A' + i%26);cout << "\n明文是:\t";while(a != '\n'){if((a <= 'z' && a >= 'a') || ( a <= 'Z' && a >='A')) { if((a <= 'z' && a >= b) || ( a <= 'Z' && a >= c)) cout << char(a - i%26);if(a >= 'a' && a < b)cout << char(a - i%26 + 26);if(a >= 'A' && a < c)cout << char(a - i%26 + 26);if(a == ' ')cout << " ";}elsecout << a;a = cin.get();}cout << endl;}int main(){while(1){int t;cout << "1.加密" << endl<< "2.解密" << endl<<"按其他键退出"<<endl<< "选择:";cin >> t;Kaisa kaisa;if(t == 1){kaisa.setI();kaisa.jiami();cout<<"加密完成\n"<<endl;}else if(t == 2){kaisa.setX();kaisa.jiemi();cout<<"解密完成\n"<<endl;}elsereturn 0;}}测试:密钥:4,明文:abcdefg 实验结果:实验二DES加密解密加密原理:DES 使用一个56 位的密钥以及附加的8 位奇偶校验位,产生最大64 位的分组大小。

凯撒密码的实验报告

凯撒密码的实验报告

凯撒密码的实验报告凯撒密码的实验报告引言:密码学作为一门古老而神秘的学科,一直以来都吸引着人们的兴趣。

而凯撒密码作为密码学的基础,其简单而又经典的加密方式,更是备受研究者和爱好者的关注。

本实验旨在通过对凯撒密码的实践应用,深入了解其原理和加密解密过程。

一、凯撒密码的原理凯撒密码,又称移位密码,是一种最早被记录的密码系统。

其基本原理是通过将明文中的每个字母按照一定的规则进行移位,从而得到密文。

在凯撒密码中,移位的规则是将字母按照顺序向后移动固定的位置,例如向后移动3个位置,即A变成D,B变成E,以此类推。

二、实验步骤1. 确定移位规则:在本次实验中,我们选择了向后移动3个位置的规则进行加密和解密。

2. 加密过程:将明文中的每个字母按照移位规则进行替换,得到对应的密文。

例如,明文中的字母A将被替换为D,字母B将被替换为E,以此类推。

3. 解密过程:将密文中的每个字母按照移位规则进行逆向替换,得到对应的明文。

例如,密文中的字母D将被替换为A,字母E将被替换为B,以此类推。

三、实验结果通过对凯撒密码的加密和解密实验,我们得到了以下结果:1. 加密结果:将明文“HELLO WORLD”加密后得到密文“KHOOR ZRUOG”。

2. 解密结果:将密文“KHOOR ZRUOG”解密后得到明文“HELLO WORLD”。

四、实验分析通过对凯撒密码的实验结果进行分析,我们可以得出以下结论:1. 凯撒密码的加密过程是可逆的,即通过解密过程可以还原出原始的明文。

2. 凯撒密码的加密强度较低,容易受到暴力破解的攻击。

因为凯撒密码只有26种可能的移位规则,暴力破解者可以通过尝试每一种规则来解密密文。

3. 凯撒密码的应用范围有限,适用于一些简单的信息加密场景,但在现代密码学中已经不再被广泛使用。

五、实验总结通过本次实验,我们对凯撒密码有了更深入的了解。

凯撒密码作为密码学的基础,为后来的密码学研究奠定了基础。

虽然凯撒密码的加密强度较低,但其简单易懂的原理和操作方式,使其成为初学密码学的入门工具。

凯撒密码实验报告

凯撒密码实验报告

凯撒密码实验报告凯撒密码实验报告引言:密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。

其中,凯撒密码是最为经典的一种密码算法,它以罗马帝国的大军统帅凯撒为名,被广泛应用于古代的军事通信中。

本实验旨在通过实际操作,深入了解凯撒密码的原理和加密解密过程。

一、凯撒密码的原理凯撒密码是一种简单的替换密码,它采用了位移的方式进行加密和解密。

具体而言,凯撒密码将明文中的每个字母按照字母表中的顺序向后(或向前)移动固定的位数,从而得到密文。

例如,当位移数为3时,明文中的字母A将被替换为D,B将被替换为E,依此类推。

二、实验步骤1. 设定位移数:在实验开始前,我们需要先设定一个位移数。

为了方便比较,我们选择了位移数为3的凯撒密码。

2. 加密明文:首先,我们选择一段明文进行加密。

假设我们选择的明文是“HELLO WORLD”。

按照凯撒密码的原理,我们将每个字母向后移动3位,得到密文“KHOOR ZRUOG”。

3. 解密密文:为了验证凯撒密码的可逆性,我们将刚才得到的密文“KHOOR ZRUOG”进行解密。

按照凯撒密码的原理,我们将每个字母向前移动3位,得到明文“HELLO WORLD”。

三、实验结果与分析通过实验,我们成功地加密了明文“HELLO WORLD”,并且通过解密密文得到了原始的明文。

这表明凯撒密码具有可逆性,加密和解密过程是相互对应的。

然而,凯撒密码也存在一些缺点。

首先,由于位移数是固定的,所以凯撒密码的密钥空间非常有限,容易受到暴力破解的攻击。

其次,凯撒密码没有考虑字母的频率分布,因此在加密后的密文中,字母的频率分布与明文相比没有变化,这也给破译者提供了线索。

为了增强凯撒密码的安全性,可以采用多次位移的方式,即多次对明文进行加密。

例如,我们可以先按照位移数3加密明文,再按照位移数5加密上一步得到的密文,这样就可以得到更复杂的密文,提高了密码的安全性。

四、实验总结凯撒密码作为密码学的经典算法,虽然在现代密码学中已经被更加安全的算法所取代,但它仍然具有重要的历史意义和教育价值。

恺撒密码的C实现 实验报告

恺撒密码的C实现 实验报告

凯撒加密的C实现实验报告1.凯撒密码简介它是一种代换密码。

据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。

凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。

明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

例如,当偏移量是3的时候,所有的字母A将被替换成D,B 变成E,以此类推X将变成A,Y变成B,Z变成C。

由此可见,位数就是凯撒密码加密和解密的密钥2.程序的运行1.程序运行2.加密(密钥为2)3.解密程序代码:(具体见附件源程序)1.加密代码void C凯撒Dlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码UpdateData(1);int i, num;char ch1[100] = {0},ch2[100] = {0};strcpy(ch2,m_mingwen);num = strlen(ch2);for(i=0;i<num;i++){if(ch2[i] >= 'a'&&ch2[i] <= 'z'){if(ch2[i]+m_miyue <= 'z'&&ch2[i] >= 'a'){ch1[i] = ch2[i] + m_miyue;}elsech1[i] = ch2[i] + m_miyue - 25;}if(ch2[i] >= 'A'&&ch2[i] <= 'Z'){if(ch2[i]+m_miyue <= 'Z'&&ch2[i] >= 'A'){ch1[i] = ch2[i] + m_miyue;}elsech1[i] = ch2[i] + m_miyue - 25;}}printf("%s\n",ch1);m_miwen = ch1;UpdateData(0);}2.解密代码void C凯撒Dlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码UpdateData(1);int i, num;char ch1[100] = {0},ch2[100] = {0};strcpy(ch2,m_miwen);num = strlen(ch2);for(i=0;i<num;i++){if(ch2[i] >= 'a'&&ch2[i] <= 'z'){if(ch2[i]-m_miyue >= 'a'){ch1[i] = ch2[i] - m_miyue;}elsech1[i] = ch2[i] - m_miyue + 25;}if(ch2[i] >= 'A'&&ch2[i] <= 'Z'){if(ch2[i]-m_miyue >= 'A'){ch1[i] = ch2[i] - m_miyue;}elsech1[i] = ch2[i] - m_miyue + 25;}}printf("%s\n",ch1);m_jiemi = ch1;UpdateData(0);}。

成教实验1-凯撒密码实现

成教实验1-凯撒密码实现

实验1 凯撒加解密算法实现
实验名称:Linux 操作系统安全
实验类型: 验证性实验
学时:2
适用对象: 信息安全
一. 实验目的
1. 了解凯撒加密、解密过程,掌握其工作原理;
2.编写凯撒加密、解密编码程序
二.实验原理
凯撒加密参考
♦50B.C,Julius Ceasar 使用了一种简单的替换密码- ——后被人称为恺撒密码(Caesar cipher )
♦首先被应用于军事上(cf Gallic Wars)
♦替换方法,每个字母用其后的第三个字母替换
♦Caesar cipher 可以描述如下:
♦Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ
♦ Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC
♦一般形式,可以把Caesar cipher 中字母移动的位数由3变为1-25中的任何一个三.实验要求
1)分别实现对文字和对文件的加密和解密
2)密钥由用户输入;
总结实验过程:方案、编程、调试、结果、分析、结论。

四.实验环境
Windws9x/NT/2000/XP
编程工具
Java
Visual C++ 6.0
五、实验报告要求
根据上面介绍的实验要求,编程实现,并给出分析报告。

凯撒加密解密上机实验报告

凯撒加密解密上机实验报告

计算机安全基础凯撒加密解密上机实验报告学院年级专业班学生姓名学生学号实验一凯撒加密解密凯撒密码简介:恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。

例如,当偏移量是左移3的时候(解密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。

需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。

例如:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ源代码:#include "kaisa.h"using namespace std;void Kaisa::setI(){cout << "\n请输入加密密码:";cin >> i;}void Kaisa::jiami(){char a, b, c;cout << "\n请输入明文:\t";cin >> a;b = char('z' - i%26);c = char('Z' - i%26);cout << "\n密文是:\t";while(a != '\n'){if((a <= 'z' && a >= 'a') || ( a <= 'Z' && a >='A')){ if((a <= b && a >= 'a') || ( a <= c && a >='A'))cout << char(a + i%26);if(a > c && a <= 'Z')cout << char(a + i%26 - 26);if(a > b && a <= 'z')cout << char(a + i%26 - 26);if(a == ' ')cout << " ";}elsecout << a;a = cin.get();}cout << endl;}void Kaisa::setX(){cout << "\n请输入解密密码:";cin >> i;}void Kaisa::jiemi(){char a, b, c;cout << "\n请输入密文:\t";cin >> a;b = char('a' + i%26);c = char('A' + i%26);cout << "\n明文是:\t";while(a != '\n'){if((a <= 'z' && a >= 'a') || ( a <= 'Z' && a >='A')) { if((a <= 'z' && a >= b) || ( a <= 'Z' && a >= c)) cout << char(a - i%26);if(a >= 'a' && a < b)cout << char(a - i%26 + 26);if(a >= 'A' && a < c)cout << char(a - i%26 + 26);if(a == ' ')cout << " ";}elsecout << a;a = cin.get();}cout << endl;}int main(){while(1){int t;cout << "1.加密" << endl<< "2.解密" << endl<<"按其他键退出"<<endl<< "选择:";cin >> t;Kaisa kaisa;if(t == 1){kaisa.setI();kaisa.jiami();cout<<"加密完成\n"<<endl;}else if(t == 2){kaisa.setX();kaisa.jiemi();cout<<"解密完成\n"<<endl;}elsereturn 0;}}测试:密钥:4,明文:abcdefg 实验结果:实验二DES加密解密加密原理:DES 使用一个56 位的密钥以及附加的8 位奇偶校验位,产生最大64 位的分组大小。

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

《C语言课程设计》任务书
所属学期:10-11-2 下达时间:2011年8月28日
完成班级: D软件101
【设计目的】
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。

本课程设计的目的和任务:(1)巩固和加深学生对C语言的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。

【设计内容与任务】
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。

1、以本班同学的具体数据为背景,设计一个本班同学通讯录。

实现功能:
1) 通讯录编辑(添加、删除)。

2) 按不同的项进行查找。

3) 对已存在的通讯录按不同的项排序。

4) 将通讯录写入文件
5) 从文件读入通讯录
备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail,QQ。

2、设计一个学生成绩排名系统,该系统的主要功能如下:
1) 具备对成绩的管理功能(添加、删除、排序)
2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)
3) 具备按学号、姓名、或课程名查询成绩的功能。

备注:成绩记录以下信息:班级,学号,姓名,课程名,成绩(百分制)。

可以用能表示学生成绩的结构体数组存储数据。

3、设计一个文件加密/解密程序,主要功能是支持简单的替换加密/解密,支持凯撒加密法(参见百度百科词条:凯撒加密法/view/4107346.htm)和ROT13加密两种加密方法。

4、设计一个简单的文件压缩/解压缩程序,例如:未压缩前的字符为"aaaccccddddd666666",则压缩以后的字符为:"3a4c5d66"。

压缩文件时需要输出压缩比,如20%。

5、设计一个万年历程序。

主要功能是能够输出任意年份或月份的日历,程序的输出的月
历格式与日常生活中使用的月历格式相同,最好能够支持通过命令行参数指定要输出的年份或月份。

6、设计一个猜数小游戏程序,随机选择如下数列中的一个开始猜数:
Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21
Lucas: 1, 3, 4, 7, 11, 18, 29, 47
Pell: 1, 2, 5, 12, 29, 70, 169, 408
Triangular: 1, 3, 6, 10, 15, 21, 28, 36
Square: 1, 4, 9, 16, 25, 36, 49, 64
Pentagonal: 1, 5, 12, 22, 35, 51, 70, 92
具体的交互过程是:显示某一数列的前5个元素,让玩家猜数列中的下一个数,失败的情况下显示下一个数,并再次让玩家猜后面的数,最多可尝试3次(因为每个数列有8个数)。

记录玩家的猜数的尝试次数及正确次数并输出。

如果能够将玩家的游戏数据如尝试次数和正确次数保存在文件中更好。

【设计要求】
1、分析课程设计题目的要求
2、写出详细设计说明
3、编写程序代码,调试程序使其能正确运行
4、设计完成的软件要便于操作和使用
5、设计完成后提交课程设计报告,课程设计报告内容包括:课程设计目的、设计任务与要求、设计说明书、设计成果和设计心得五个部分,具体要求见设计报告模板。

【指导教师】
D软件101 朱强
【设计时间】
第1周~第2周
【设计报告】
设计报告书封面和正文格式要符合淮海工学院课程设计报告书封面与正文标准格式要求,设计报告内容不少2000字。

其正文一般有如下几个方面的内容:
1、课程设计名称、班级号、学号、学生姓名和课程设计起止日期
2、课程设计目的和要求
3、课程设计任务内容
4、详细设计说明
5、软件使用说明
6、课程设计心得与体会
7、附录1:参考文献
8、附录2:部分程序清单(带有较详细的注释)
【提交要求】
(1) 每位同学需独立提交书面设计报告书(每人一份),要求编排格式统一、规范、内
容充实,同时通过教学平台提交设计报告电子版;
(3) 提交日期:第3周周三(2011年9月13日)之前。

【设计时间】
第1周~第2周共2周(2011.8.29——20011.9.9),具体时间安排如下
教学内容学时地点备注实习动员与任务布置0.5天教室
查阅资料,分析与设计2天图书馆、实验室
编写程序,进行调试6天实验室、教室
成果验收,完成设计报告 1.5天实验室
【设计成绩评定】
设计成绩是依据在设计中的表现综合评定,包括:
1、设计纪律(20%):设计中遵守纪律,服从管理,以及设计态度等因素;如有严重纪
律问题,可按学校有关规定直接评为不及格;
2、设计报告(30%):设计报告的完成情况;
3、设计演示(30%):根据设计实际完成的质量而考核评分;
4、考核形式(20%):除了上述的考核因素外,指导教师平时将通过提问及验收时的问
辩形式准确评定设计成绩。

5、设计成绩按优、良、中、及格、不及格五级评定。

指导教师:朱强
2011年8月27日。

相关文档
最新文档