课程设计题目加密解密程序设计学院自动化学院专业电气工程及其自动化班级姓名指导教师年月9 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目:加密解密程序设计初始条件:掌握8086汇编语言程序设计方法,设计一个电子时钟,实现分、秒、时的显示与刷新功能。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 定义显示界面。
2. 调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。
3. 将存在系统内存区的时间数用数字式或指针式钟表的形式显示出来。
4. 获取键盘的按键值,判断键值并退出系统。
5. 撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:12月26日-----12月28日查阅资料及方案设计12月29日----- 1月 2 日编程1月3日----- 1月7日调试程序1月8日----- 1月9日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)1设计任务及要求 (2)1.1 加密解密设计的意义 (2)1.2 程序设计任务 (2)2 加密方法及方案比较 (3)2.1 加密方法 (3)2.2 加密方案及比较 (3)3 加密解密设计流程及描述 (5)3.1程序所需模块 (5)3.2程序运行界面 (5)3.3响铃程序 (6)3.4功能选择程序 (6)3.5数据循环输入子程序 (7)3.6加密过程程序 (8)3.7解密过程程序 (9)3.8退出程序 (10)3.9总体程序流程图 (11)4 程序调试说明和结果分析 (12)4.1 程序调试 (12)4.2 程序运行结果 (12)5 心得体会 (15)参考文献 (16)附录:设计原程序 (17)本科生课程设计成绩评定摘要本次课程设计是需要通过掌握的8086汇编语言程序设计方法,设计出一个用于加密和解密的软件程序。
程序运行后,首先显示‘Please Input Data:‟,并响铃一声,然后从键盘接受以字母开始的201个字节型数据,若首字母为‘E’,则将后续的200个数据进行加密后,显示在屏幕上;若首字母为‘R’,则将后续的200个数据解密,并显示在屏幕上。
数据加密和解密功能的实现是利用对数据的ASCII码进行加减运算,使它改写为另一组数据,隐藏了原数据,使他人不能看到,从而保证了原数据的安全。
关键字:加密;解密;保证安全1设计任务及要求1.1加密解密设计的意义当今的社会已经进入一个充满竞争的时代,同时也是一个信息知识化和知识产权化的时代,信息的取得方式来源和取得信息的多少都很大程度上成为了我们能否更顺利更优秀得完成工作而在激烈的竞争中取得胜利的关键所在,所以势必有很多私人的信息需要实行安全措施,并进行必要的保密工作,这就要用到加密程序,而当我们需要用到这些信息,并从加密系统中提取出来时,就要用到解密程序,也就是我们将要设计的加密和解密环节。
加密解密系统是目前运用最广泛和最重要的应用系统之一。
在工作中,我们需要通过加密解密技术对工作中出现的对所在单位非常重要且需要十分保密的资料或文件进行加密,以确保自身的利益不被侵害;在生活中,密码箱也很有用处,而其原理正式加密解密环节;在军事上,为了更好的保护自己,保留更多的军事科学技术为我方所用,并且不让对手过于了解我方攻防战略战术和武器装备,需要对相关资料进行设置安全保护。
可以看到,当今社会的方方面面已经越来越需要使用到加密和解密的装置来帮助我们更好的管理自己的生活,处理自己的工作,国家更是需要有安全保障才能越发强大,因此,加密解密系统的优良是完成生产生活的重要任务之一。
1.2程序设计任务程序运行后,首先显示…Please Input Data:‟,并响铃一声,然后从键盘接受以字母开始的101个字节型数据,如果首字母为…E‟,则将后续的200个数据进行加密后,显示在屏幕上;如果首字母为…R‟,则将后续的200个数据解密,并显示在屏幕上。
撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计心得体会。
2 加密方法及方案比较2.1 加密方法加密系统需要涉及到明码(clear code)和暗码(dim code)之间的转换,明码就是当我们准备进行加密操作时被加密的字符数据,一般由键盘等输入设备输入给计算机;暗码则是明码被加密后变成的数据,明码和暗码是通过算法(algorithm)来进行转换的,而转化过程就是加密和解密的过程,很明显,加密和解密的算法是一一对应的,是一对反运算,在加密解密中叫做“对称算法”(symmetrical algorithm),加密解密环节的安全系数也主要取决于设计的算法,主要是防范用穷举法,debug法等破译方法。
所以选择合适的算法是建立成熟可靠,安全性好的加密解密环节的关键所在。
常用数据加密算法有:数据加密算法有很多种,按照发展进程来分,经历了古典密码、对称密钥密码和公开密钥密码阶段,古典密码算法有替代加密、置换加密;对称加密算法包括DES和人AES;非对称加密算法包括RSA、背包密码、McEliece密码、Rabin、椭圆曲线、EIigamal D-H等。
目前在数据通信中使用最普遍的算法有DESDESDESDES算法、及RSARSARSARSA算法和PGP算法等。
2.2 加密方案及比较方案一:对需要加密的数据进行分类,数字则减1加密,字母则加3加密,得到加密后的数据,解密只需对数字加1,字母减3,并通过DOS调用将所得结果显示在屏幕上。
方案二:加密时将输入的字符乘以二再和0FFH取异或;解密是将输入的字符除以二再和0FFH取异或。
并通过DOS调用将所得结果显示在屏幕上。
比较:对数据进行异或加密容易超出字母和数字表示范围,产生特殊符号和图案,不易控制,这次设计主要针对普通数字和字母的加密,因此方案一比较适合。
本次设计主要针对输入的数字和字母进行加减加密,采用的方法为输入数据后,若第一个数据为E则把E后面的数字减1字母加3做为加密后的数据,若要对一组数据解密,则输入R并在其后输入想要解密的数据,程序运行后便会还原数据,得到解密后的数据。
加密过程中会由于加密后数据超出数字或字符可以表示的范围,数子9加1后超出范围,因此可以用9减去9,得0来表示数字9加密后的数据;字母X/x,Y/y,Z/z加3后也会超出字母表示范围,因此可以减去26,得A/a,B/b,C/c,分别作为其加密后的数据。
3 加密解密设计流程及描述3.1程序所需模块根据程序设计要求,可写出该程序所需各主要的功能模块:字符循环输入模块、字符串输出模块、响铃模块、功能选择模块、加密模块、解密模块、程序退出模块。
程序功能模块流程图如图3-1所示。
图3-1程序功能模块流程图3.2程序运行界面字符串显示子程序流程图如图3-2所示。
图3-2字符串显示子程序流程图好看的运行界面可以给用户一种赏心悦目的感觉,本次设计主要利用汇编语言编写程序并在DOS环境下运行,因此可以使用DATA SEGMENT指令定义数据段显示自己设计的界面。
可以加入自己设计的图案或字符串,采用9号功能调用,输出多字符串,因此其结尾必须以…$‟结尾,自定义界面程序代码格式如下:DATA SEGMENTHEADMSG DB 0DH,0AH…‟,'$'字符串显示过程子程序程序代码如下:DISP PROC NEAR ;显示字符串子程序MOV AH,9INT 21HRETDISP ENDP3.3响铃程序根据设计要求,程序运行后,首先显示…Please Input Data:‟,并响铃一声,响铃程序可以利用2号功能调用,07H为响铃的ASCII码,响铃程序代码如下:MOV DL,07H ;设置响铃声MOV AH,2INT 21H ;输出响铃声3.4功能选择程序用比较指令CMP选择所需程序实现的功能,如果输入的字符串首字符为E则进入加密子程序;如果输入的字符串中首字符为R则进入解密子程序;如果输入的字符串中首字符为Q或q则进入退出子程序。
如果输入的字符中首字符非前三种情况则会提醒你再次输入,直到输入的首字符为前面三种情况中的一种为止。
功能选择程序流程图如图3-3所示。
图3-3功能选择程序流程图3.5数据循环输入子程序采用1号DOS功能调用命令,循环输入单个字符并保存数据,加密解密均是以单个字符为单位进行,这样就不会由于一个字符加密后产生的进位影响到其他字符,造成加密解密结果失真。
采用的是FOR循环语句,并在输入最后一个字符后,加…$‟字符结束输入,直至键入回车符终止子程序返回主程序,因此还要用到比较指令CMP或TEST指令。
循环输入程序流程图如图3-4所示。
图3.4循环输入程序流程图3.6加密过程程序主要针对输入的数字和字母进行加密,采用的方法为,输入数据后,若第一个数据为E,则把E后面的数字减1字母加3作为加密后的数据。
对于数字0减1后小于0,需直接加上9,变成9,对于X/x,Y/y,Z/z加3后会超出字母范围因此需减去26,变为A /a,B/b,C/c。
程序中判断语句应用CMP或者TEST指令以免产生运算结果,破坏数据。
由于是一位一位的进行数据加密,因此需要时刻判断当前字符是否为…$‟,因为字符串是以…$‟结尾的。
加密过程的关键在于,判断字符类型及加密后如何对数据进行保存并保护,该过程中对子程序的调用应用非常多,可见子程序的重要作用。
加密过程程序流程图如图3-5所示。
图3.5加密过程程序流程图3.7解密过程程序解密为加密的逆过程,即输入数据后,若第一个数据为R,则把R后面的数字加1字母减3作为解密后的数据。
由于数字9加1后大于9,需直接减9变为0,对于A/a,B/b,C/c减3后会超出字母范围因此需减去3再加26变成X/x,Y/y,Z/z,。
因此当输入数据9以后,应直接将其减9变为0,当输入A/a,B/b,C/c时,应先减去3再加上26,变成X/x,Y/y,Z/z。
和加密过程类似,也许判断输入字符是否为…$‟,以决定是否完成输入进行解密过程。
不同类型所以加密算法不同,因此解密的关键就是运用对应加密算法的逆运算进行解密,可见对字符类型的判断很重要。
解密过程程序流程图如图3-6所示。
图3-6解密过程程序流程图3.8退出程序当第一个输入数据为字母Q/q时,开始运行退出程序,提示“DO YOU WANT TO EXIT THIS PROGRAM?(Y/N):”输入Y则退出程序,输入N则提示:“PLEASE INPUT DATA:”。