加密解密程序设计.docx
- 文档编号:10105614
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:30
- 大小:666.18KB
加密解密程序设计.docx
《加密解密程序设计.docx》由会员分享,可在线阅读,更多相关《加密解密程序设计.docx(30页珍藏版)》请在冰豆网上搜索。
加密解密程序设计
加密解密程序设计
学号:
课程设计
题目
加密解密程序设计
学院
自动化学院
专业
电气工程及其自动化
班级
姓名
指导教师
年
月
日
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
自动化学院
题目:
加密解密程序设计
初始条件:
掌握8086汇编语言程序设计方法,设计不同的加密算法并完成对数据的加密和解密工作。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.程序运行后,首先显示‘PleaseInputData:
’,并响铃一声,然后从键盘接受以字母开始的201个字节型数据,若首字母为‘E’,则将后续的200个数据进行加密后,显示在屏幕上;若首字母为‘R’,则将后续的200个数据解密,并显示在屏幕上。
2.撰写课程设计说明书。
内容包括:
摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:
设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:
2012年12月26日-----12月28日查阅资料及方案设计
2013年12月29日-----01月02日编程
2013年01月03日-----01月07日调试程序
2013年01月08日-----01月09日撰写课程设计报告
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
本科生课程设计成绩评定表
摘要
汇编语言是与机器语言密切相关的,是面向机器的语言。
本次设计就是要用8086汇编语言设计一个程序,使它能够对网络信息的原始数据进行加密保护和解密使用。
信息的传输则是通过公共信道这些通道基本是是不设防的,很脆弱的,很容易受到攻击和破坏,因而需要一种措施来保护我们的数据,防止被一些用心不良的人盗取或破坏。
数据加密和解密功能的实现是利用对数据的ASCII码进行加减运算,使它改写为另一组数据,隐藏了原数据,使他人不能看到,从而保证了原数据的安全。
本程序运用了顺序,选择,循环等多种形式进行汇编,通过设定的对称算法,对输入的字符数据进行加密和解密工作。
关键词:
加密解密汇编语言安全保密
1概述
当今的社会已经进入一个充满竞争的时代,同时也是一个信息知识化和知识产权化的时代,信息的取得方式来源和取得信息的多少都很大程度上成为了我们能否更顺利更优秀得完成工作而在激烈的竞争中取得胜利的关键所在,所以势必有很多私人的信息需要实行安全措施,并进行必要的保密工作,这就要用到加密程序,而当我们需要用到这些信息,并从加密系统中提取出来时,就要用到解密程序,也就是我们将要设计的加密和解密环节。
加密解密系统是目前运用最广泛和最重要的应用系统之一。
在工作中,我们需要通过加密解密技术对工作中出现的对所在单位非常重要且需要十分保密的资料或文件进行加密,以确保自身的利益不被侵害;在生活中,一些个人财物或贵重物品需要放置于安全可靠的地方,这时,密码箱是个很好的选择,而其原理正式加密解密环节;在军事上,为了更好的保护自己,保留更多的军事科学技术为我方所用,并且不让对手过于了解我方攻防战略战术和武器装备,需要对相关资料进行设置安全保护。
可以看到,当今社会的方方面面已经越来越需要使用到加密和解密的装置来帮助我们更好的管理自己的生活,处理自己的工作,国家更是需要有安全保障才能越发强大,因此,加密解密系统的优良是完成生产生活的重要任务之一。
加密系统需要涉及到明码(clearcode)和暗码(dimcode)之间的转换,明码就是当我们准备进行加密操作时被加密的字符数据,一般由键盘等输入设备输入给计算机;暗码则是明码被加密后变成的数据,明码和暗码是通过算法(algorithm)来进行转换的,而转化过程就是加密和解密的过程,很明显,加密和解密的算法是一一对应的,是一对反运算,在加密解密中叫做“对称算法”(symmetricalalgorithm),加密解密环节的安全系数也主要取决于设计的算法,主要是防范用穷举法,debug法等破译方法。
所以选择合适的算法是建立成熟可靠,安全性好的加密解密环节的关键所在。
2设计任务及要求
2.1程序设计任务
程序运行后,首先显示‘PleaseInputData:
’,并响铃一声,然后从键盘接受以字母开始的201个字节型数据,若首字母为‘E’,则将后续的200个数据进行加密后,显示在屏幕上;若首字母为‘R’,则将后续的200个数据解密,并显示在屏幕上。
2.2程序设计要求及目的
程序设计的要求是撰写课程设计说明书。
内容包括:
摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:
设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
程序设计的目的是通过亲自实践,亲自动手以加强和巩固课本上的知识,消除课堂上遇到的疑惑;通过课程设计培养独立动手和独立思考的能力,提高自主创新思维水平;了解和熟练汇编语言中的各种指令,学会编写汇编程序;学会查找资料,应用资料,并养成分类收藏资料的习惯。
2.3需求分析
(1)要求处理命令行参数。
(2)能熟练运用基本的算术运算和逻辑位运算。
(3)用汇编实现简单程序编写并调用子程序。
(4)掌握DOS功能调用中有关响铃、字符串输出的指令。
(5)对可执行程序的参数使用。
(6)锻炼综合解决问题的能力。
3方案设计
3.1加密方式
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。
该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
3.2方案比较
方案一:
以字符型数据为明码和暗码来进行加密和解密工作,通过判断首字符来确定是将接下来的字符进行加密还是解密,并最终将通过算法得出的字符显示出来,设计算法具体如下:
加密时,将输入的字符乘以二再和0FFH取异或;解密时,将输入的字符除以二再和0FFH取异或。
并通过DOS调用将所得结果显示在屏幕上。
方案二:
对需要加密的数据进行分类,数字则加2加密,字母则减5加密,然后各自取镜像,得到加密后的数据,解密只需对数字减2,字母加5。
对数据进行异或加密容易超出字母和数字表示范围,产生特殊符号和图案,不易控制,这次设计主要针对普通数字和字母的加密,因此方案二比较适合。
3.3设计思路
本次设计采用的方法为输入数据后,若第一个数据为E或e则把e或E后面的数字加2字母减5并各自取镜像做为加密后的数据,若要对一组数据解密,则输入R或r并在其后输入想要解密的数据,程序运行后便会还原数据,得到解密后的数据。
加密过程中会由于加密后数据超出数字或字符可以表示的范围,数字9加2后超出范围,因此可以用11减去10,得1来表示数字9加密后的数据;字母A/a,B/b,C/c,D/d减5后也会超出字母表示范围,因此可以加26,再取镜像得E/e,D/d,C/c,B/b分别作为其加密后的数据。
4设计功能模块概述
4.1程序所需模块
本程序所需各主要的功能模块有:
字符循环输入模块、字符串输出模块、响铃模块、功能选择模块、加密模块、解密模块、程序退出模块,程序功能模块流程图如图4-1所示。
图4-1程序功能模块流程图
4.2程序运行界面
字符串显示子程序流程图如图4-2所示。
图4-2字符串显示子程序流程图
考虑到一定的美观性,本次设计主要利用汇编语言编写程序并在DOS环境下运行,因此可以使用DATASEGMENT指令定义数据段显示自己设计的界面。
本次设计为心形。
可以加入自己设计的图案或字符串,采用9号功能调用,输出多字符串,因此其结尾必须以‘$’结尾,自定义界面程序代码格式如下:
DATASEGMENT
HEADMSGDB0DH,0AH‘ ’,'$'
字符串显示过程子程序程序代码如下:
DISPPROCNEAR;显示字符串子程序
MOVAH,9
INT21H
RET
DISPENDP
4.3响铃程序
根据设计要求,程序运行后,首先显示‘PleaseInputData:
’,并响铃一声,响铃程序可以利用2号功能调用,07H为响铃的ASCII码,响铃程序代码如下:
MOVDL,07H;设置响铃声
MOVAH,2
INT21H;输出响铃声
4.4功能选择程序
用比较指令CMP选择所需程序实现的功能,如果输入的字符串首字符为E或e则进入加密子程序;如果输入的字符串中首字符为R或r则进入解密子程序;如果输入的字符串中首字符为Q或q则进入退出子程序。
如果输入的字符中首字符非前三种情况则会提醒你再次输入,直到输入的首字符为前面三种情况中的一种为止,功能选择程序流程图如图4-3所示。
图4-3功能选择程序流程图
4.5数据循环输入子程序
采用1号DOS功能调用命令,循环输入单个字符并保存数据,加密解密均是以单个字符为单位进行,这样就不会由于一个字符加密后产生的进位影响到其他字符,造成加密解密结果失真。
采用的是FOR循环语句,并在输入最后一个字符后,加‘$’字符结束输入,直至键入回车符终止子程序返回主程序,因此还要用到比较指令CMP或TEST指令,循环输入程序流程图如图4-4所示。
图4-4循环输入程序流程图
4.6加密过程程序
主要针对输入的数字和字母进行加密,采用的方法为,输入数据后,若第一个数据为E或e,则把e或E后面的数字加2字母减5作为加密后的数据。
数字9加2后超出范围,因此可以用11减去10,得1来表示数字9加密后的数据;字母A/a,B/b,C/c,D/d减5后也会超出字母表示范围,因此可以加26,再取镜像得E/e,D/d,C/c,B/b分别作为其加密后的数据。
程序中判断语句应用CMP或者TEST指令以免产生运算结果,破坏数据。
由于是一位一位的进行数据加密,因此需要时刻判断当前字符是否为‘$’,因为字符串是以‘$’结尾的。
加密过程的关键在于,判断字符类型及加密后如何对数据进行保存并保护,该过程中对子程序的调用应用非常多,可见子程序对于程序的重要作用,加密过程程序流程图如图4-5所示。
图4-5加密过程程序流程图
4.7解密过程程序
解密为加密的逆过程,即输入数据后,若第一个数据为R或r,则把R或r后面的数字或字母先取镜像,数字减2字母加5作为解密后的数据。
由于数字9镜像后为0,而0减2后小于0,需直接加上10变为8,对于V/v,W/w,X/x,Y/y,Z/z加5后会超出字母范围则先镜像再加5变成J/j,I/i,H/h,G/g,F/f。
因此当输入数据0以后,取镜像再减2变为7,当输入A/a,B/b,C/c,D/d时,应取镜像再加5,变成E/e,D/d,C/c,B/b。
和加密过程类似,也许判断输入字符是否为‘$’,以决定是否完成输入进行解密过程。
不同类型所以加密算法不同,因此解密的关键就是运用对应加密算法的逆运算进行解密,可见对字符类型的判断很重要,解密过程程序流程图如图4-6解密过程程序流程图所示。
图4-6解密过程程序流程图
4.8退出程序
当第一个输入数据为字母Q/q时,开始运行退出程序,提示“DOYOUWANTTOEXITTHISPROGRAM?
(Y/N):
”。
当输入Y/y则退出程序,输入N/n则提示:
“PLEASEINPUTDATA:
”。
退出程序所用指令较为简单,就是简单地9号DOS功能调用字符输入、CMP比较判断指令、以及基本的跳转指令即可实现,退出程序流程图如图4-7所示。
图4-7退出程序流程图
5总体程序及运行结果
5.1总体程序流程图
将前面介绍的各个模块连接起来即为完整的加密解密程序,程序完整代码见附录部分,整体程序流程图如图5-1所示。
图5-1整体程序流程图
5.2程序调试过程
(1)在编写代码时,由于简单的跳转指令在程序中有字节范围限制,因此通过翻阅资料和阅读相关的例子后,终于了解并掌握了子程序的功能,运用了子程序调用。
(2)写完代码,进入到程序的调试阶段,在这里也出现了问题。
问题一:
在定义子程序处,模块的嵌套不匹配,一般都是由于前后段名不相同、前后子程序不相同,需要配对出现的指令不一致等出现该错误,因而始终不能运行。
修改方法:
在子程序最后一行加上endp即可,保证程序正常运行。
问题二:
镜像子程序中使用SUB语句之后,输出乱码。
修改方法:
将SUB改成SBB即带进位的减法指令。
问题三:
修改完语句的错误之后,再点击调试,发现还是有错误提示为“invalidcharacterinfile”,仔细检查发现没有问题,于是想到会不会是电脑的兼容性问题。
将程序放在同学的电脑之后,发现终于可以正常运行。
5.3程序运行结果
在接口试验平台集成环境中运行该程序,点击汇编、运行后得到程序显示的菜单界面。
该界面上有显示此程序的使用方法并提示输入数据(PLEASEINPUTDATA:
),程序运行菜单界面如图5-2所示。
图5-2程序运行菜单界面
输入数据eQweas123按回车键运行程序,界面上显示的心形表示数据已加密,为Oraem654。
程序加密界面如图5-3程序加密界面
(1),图5-4程序加密界面
(2)所示。
图5-3程序加密界面
(1)
图5-4程序加密界面
(2)
输入数据rqeAS342按回车键后程序运行,图中显示的钥匙形表示数据已解密,为oaEM435。
如果想退出程序则输入字母Q或q,按回车键运行后提示“DOYOUWANTTOEXITTHISPROGRAM?
(Y/N):
”。
程序解密及退出程序界面如图5-5所示。
图5-5程序解密及退出程序界面
输入Y或y程序结束,回到集成环境窗口。
输入N或n回到程序开始菜单,提示“PLEASEINPUTDATA:
”,运行后如图5-6返回程序开始菜单界面所示。
图5-6返回程序开始菜单界面
如果输入数据不是E/e,R/r,Q/q,运行程序,同样提示“PLEASEINPUTDATA:
”,运行后如图5-7输入错误界面所示。
图5-7输入错误界面
6心得体会
这学期的课程设计一开始便不像上学期那样是在所有考试结束之后才进行的,还记得第一次老师把我们全班集中在一起开会是在四连考的前几天。
面临着即将到来的四连考,手头又多了一门课设,每天上午去自习室待一天,然后晚上回到寝室继续分析课题敲代码。
回想起那几天的生活,充实而忙碌,这样的大学生活才算是有意义吧。
这次的微机原理课程设计中,暴露出了我还有许多不足和需要改进的地方。
微机原理课程的考试早已考过,想想自己平时上课的时候听课不专心,问题都是似懂非懂,靠着考试前几天来搞搞突击,研究一下程序,然后背背基本的概念,可能分数也能有八十左右。
但是真正到了“战场演练”的时候,才发现自己的知识体系不牢固不扎实。
很多东西根本没有理解透彻,只是为了考试而考试。
通过本次课程设计,我深刻地体会到课程设计是一个学习的过程,这种学习不仅仅是对课本上的知识的再深化再提高,更是需要我们通过各种方式获取更多更有价值的信息和知识用于实践我们的设计方案,从图书馆里找到相关的文献和资料,从网上浏览更多新鲜的设计思路和技巧。
而且本次设计的课题与日常生活联系较紧密,让我对微机原理有更深刻更直观的认识。
“加密解密”这个过去听起来特别高深的问题,使我通过学习,不但了解了加密解密其中的部分原理,更能够通过思考完成简单的加密解密程序的设计。
而在调试程序的时候也出现了许多问题,这时候我会告诉自己不能急躁,没有人是一次成功的,于是一个一个将问题排查。
当自己写的代码终于能完成功能的那一刻,心里还是有点小激动的。
由于本次课程设计是分组合作,让我感受到了团结就是力量,集体协作的重要性。
有些问题,可能你一个人思考的时候很容易走入一个误区,这时候一个给力的队友会及时的点拨你,让你茅塞顿开。
总之,这次的课程设计带给我了很多收获。
成功的路上有鲜花掌声,但更多的是荆棘遍地。
在今后的学习和生活中,我会吸取教训,不断超越自我。
参考文献
[1]彭虎,周佩玲,傅忠谦.微机原理与接口技术(第3版).北京:
电子工业出版社,2011.8.
[2]RichardC.Detemer(作者),郑红(译者),陈丽琼(译者),8086汇编语言基础教程.北京:
机械工业出版社,2009.
[3]温玉杰.Intel汇编语言程序设计(第4版).北京:
电子工业出版社,2004.
[4]郑学坚,周斌.微型机算计原理及应用(第3版).北京:
清华大学出版社,2003.
[5]沈美明,温冬蝉.IBM-PC汇编语言程序设计.北京:
清华大学出版社,2003,6.
附录:
源程序
本次设计的完整程序代码如下:
DATASEGMENT
;定义数据段
HEAD0DB'',0DH,0AH
DB'+-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*',0DH,0AH
DB'|WELCOME!
*',0DH,0AH
DB'*AIFYOUWANNAENCRYPT|',0DH,0AH
DB'|PLEASEINPUTBYMSTARTWITHALETTEREORe!
*',0DH,0AH
DB'*BIFYOUWANNADECRYPT|',0DH,0AH
DB'|PLEASEINPUTBYMSTARTWITHALETTERRORr!
*',0DH,0AH
DB'*CIFYOUWANNAEXITTHISPROGRAM|',0DH,0AH
DB'|PLEASEPRESSQORq!
*',0DH,0AH
DB'+-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*',0DH,0AH,'$'
HEAD1DB0DH,0AH,'PLEASEINPUTDATA:
','$'
HEAD2DB'',0DH,0AH
DB'********',0DH,0AH
DB'*******',0DH,0AH
DB'*****',0DH,0AH
DB'**TaoYue**',0DH,0AH
DB'**ElectricalEngineering**',0DH,0AH
DB'**1107Class**',0DH,0AH
DB'****',0DH,0AH
DB'****',0DH,0AH
DB'****',0DH,0AH
DB'****',0DH,0AH
DB'****',0DH,0AH
DB'****',0DH,0AH
DB'*',0DH,0AH
DB0DH,0AH,'AFTERENCRYPTING:
','$'
HEAD3DB'',0DH,0AH
DB'********',0DH,0AH
DB'**',0DH,0AH
DB'*************************',0DH,0AH
DB'*******',0DH,0AH
DB'*************************',0DH,0AH
DB'**',0DH,0AH
DB'********',0DH,0AH
DB0DH,0AH,'AFTERDECRYPTING:
','$'
HEAD4DB0DH,0AH,'DOYOUWANTTOEXITTHISPROGRAM?
(Y/N):
','$'
HEAD5DB'',0DH,0AH
DB'',0DH,0AH
DB'',0DH,0AH,'$'
BUFFDB200DUP(0)
ENCRYPTIONDB200DUP(0)
DECRYPTIONDB200DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,9;请求输出
MOVAL,'*'
MOVCX,63;连续63个*
INT10H
LEADX,HEAD0;输出HEAD0数据段
CALLDISP
MOVDL,07H;设置响铃声
MOVAH,2
INT21H;输出响铃声
MOVAH,9;请求输出
MOVAL,'*'
MOVCX,63;连续63个*
INT10H
CALLCYCLE
CYCLEPROCNEAR;选择程序
LEADX,HEAD1;提示PLEASEINPUTDATA:
CALLDISP
XORSI,SI
MOVAH,1;输入并比较
INT21H
CMPAL,'E'
JEJ1;若输入为E则接到J1
CMPAL,'e';若输入为e则接到J1
JEJ1
CMPAL,'R';若输入为R则接到J2
JEJ2
CMPAL,'r';若输入为r则接到J2
JEJ2
CMPAL,'Q';若输入为Q则接到EC1
JEESC1
CMPAL,'q';若输入为q则接到EC1
JEESC1
JMPCYCLE
J1:
CALLJIAMI;把J1定义为子程序JIAMI
J2:
CALLJIEMI;把J2定义为子程序JIEMI
ESC1:
CALLEXIT;把ESC1定义为子程序EXIT
RET
CYCLEENDP
DISPPROCNEAR;显示字符串子程序
MOVAH,9
INT21H
RET
DISPENDP
INPUTLOOPPROCNEAR;字符串输入程序
FO:
;循环输入单个字符
MOVAH,01H
INT21H
CMPAL,0DH;判断是否回车?
JEFINISHE
MOVBUFF[SI],AL;保存输入数据
INCSI
JMPFO
FINISHE:
MOVBUFF[SI],24H;输入'$',输入结束
RET
INPUTLOOPENDP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 加密 解密 程序设计