logo资料库

汇编实现文件加密解密.doc

第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
资料共38页,剩余部分请下载后查看
《汇编语言》课程设计报告 文件加密程序 院 系 :计算机科学与技术 专 业 :计算机科学与技术 班 级 : 计算机 0907 班 学 号 : U200915075 姓 名 : 刘珂男 指导教师 : 卢萍 2011 年 9 月 7 日 1
************目 录************* 一、需求分析 ……………………………………………… 3 二、系统设计 ……………………………………………… 3 三、软件开发 ……………………………………………… 16 四、软件测试 ……………………………………………… 16 五、特点不足 ……………………………………………… 21 六、过程和体会 ……………………………………………… 25 七、源码和说明 ……………………………………………… 28 2
一、需求分析 1、题目要求 编写一个文件加密程序 enc,对于任意的文件进行加密和解密,加密算法何 以自选。 程序功能: 1.程序带有 3 个命令行参数,依次为运行模式、密钥、文件名。 e 密钥 文件名 Enc 对于文件进行加密 Enc 对于文件进行解密 要求加密后的文件进行解密能够完全恢复成原文件。 d 密钥 文件名 2、需求分析 重点考察 1.基本的算术运算和逻辑位运算。 2.用汇编实现简单的数据结构。 3.INT21H 系统功能调用中有关文件、目录的操作。 4.可执行程序的参数使用。 5.综合解决问题的能力。 二、系统设计 1、概要设计 (1)设计思路 1、要对一个文件进行加密处理首先要将其打开,汇编中可用 3DH 功能调用 按路径打开文件。 2、打开文件之后便是将其调入内存之中,因而用到 3FH 功能调用,从文件 或设备中读入。 3、按写好的加密程序对其进行加密处理。 4、将加密后的内存中的文件重新写入覆盖掉原文件,可用 40H 功能调用, 向文件或设备写入。 5、覆盖掉原文件后再关闭文件,可用 3EH 功能调用,关闭文件。 6、解密部分与加密部分相仿,先打开文件,读入内存,解密后重新写入覆 3
盖原文件,最后关闭文件 (2)加密原理 利用汇编语言读文件功能调用,将文件数据每次读一个字节至内存之中,输 入加密密匙,将其由字符转变成数字,与内存中的文件内容相加,改变文件内容, 再写入覆盖文件,完成加密处理。 (3)解密原理 解密原理与加密原理基本一致,将文件数据每次读一个字节至内存之中,输 入加密密匙,将其由字符转变成数字,由内存中的待解密的文件内容减去密匙, 改变文件内容,再写入覆盖文件,完成解密处理。 (4)模块划分 程序分成三大模块 1、主模块对文件进行读写操作及输出信息提示,并调用加密和解密模块。 2、加密模块调用加密子程序对文件进行加密处理,并返回主程序。 3、解密模块调用解密子程序对文件进行解密处理,并返回主程序。 (5)模块之间关系 程序以主模块为框架,依次读入一个文件字节后,再输入加密密匙,将密匙 处理后,调用加密子模块对文件字节加密处理(本质为文件字符 ACSII 码+处理后 密匙大小),加密完成后返回主模块,继续读入下一个字符,调用加密模块加密, 直至所有文件字符读完为止;主模块与解密模块之间的关系也基本同上! (6)总体结构及流程图 1.进入选择菜单,选择进行加密、解密处理或者了解程序及作者信息,又或 者退出。 2.选择 加密 后,输入文件路径及文件名打开文件,将文件一个字符一个字 符读入内存,输入加密密匙,调用加密子函数对文件字符一个一个加密处理直至 完成整个文件加密,加密完成后返回选择菜单,继续进行选择操作。 3.选择 解密 后,基本与加密一致,仅仅是解密时完成一个加密的逆过程。 4.选择 了解介绍 后,会有关于软件和设计者的信息。 5.选择 退出 后,会返回上级菜单。 4
6.总体结构流程图 开始 进入选择菜单,根据提示进行操作选择 N N N 输入='3'? 输入='1'? 输入='2'? 结束 Y Y 输出关于程序和作者的信息 依次输入文件路径和文件名及加密密 匙,打开并读入文件并对密匙进行处理 加密完成后,写入覆盖源文件,并关闭 文件,返回选择菜单 Y 依次输入文件路径和文件名及解密密 匙,打开并读入文件并对密匙进行处理 解密完成后,写入覆盖源文件,并关闭 文件,返回选择菜单 5
(7)数据段设计 1、首先是选择菜单的设计 OPTION_MSG · DB DB DB DB DB DB DB DB 0DH,0AH " " " " " " " ********* WELCOME TO USE THIS SOFTWARE ********",0DH,0AH YOU CAN USE THIS SOFTWARE TO ENCRPT AND DECRYRPT ",0DH,0AH INPUT 1 TO ENCRYPT!",0DH,0AH INPUT 2 TO DECRYPT!",0DH,0AH INPUT 3 TO GET THE INTRODUCTION!",0DH,0AH INPUT OTHERS TO QUIT!",0DH,0AH PLEASE INPUT THE NUMBER TO MAKE CHOICE!",0DH,0AH,'$' ;选择菜单界面,输入 1 进行加密,2 进行解密,3 了解软件信息,输入其它退出 2、程序介绍和软件设计者信息 INTRO_MSG DB 0DH,0AH DB " DB " DB " DB " DB " DB " ********* WELCOME TO USE THIS SOFTWARE ********",0DH,0AH THIS SOFTWARE IS A VERY SIMPLE TOOL!",0DH,0AH THIS KIND OF MEANS IS EASY TO USE AND CAN HELP YOU TO PROTECT YOUR PRIVACY",0DH,0AH YOU CAN USE IT TO ACHIEVE ENCRYPTION AND ON",0DH,0AH SCHOOL:HUST UNIVERSITY CLASS",0DH,0AH DESIGNER: LIU KE NAN ID:U200915075",0DH,0AH,0DH,0AH,0DH,0AH,'$' CLASS: CS 0907 STUDENT 3、关于一些信息提示 ERROR_MSG DB ERROR_MSG1 DB "ERROR!",0DH,0AH,'$' ;提示选择或输入有误的信息 "PLEASE INPUT DIGIT AND DON'T INPUT ANY OTHER ;当输入不是数字时,给出错误提示 CHARS!",0DH,0AH,'$' ERROR_MSG2 DB "THE CODE MAYBE TOO BID ,PLEASE INPUT AGAIN! ",0DH,0AH,'$' ;当输入数字过大时造成溢出,给出 错误提示 QUIT_MSG DB INPUT_MSG DB "PRESS ANY KEY TO QUIT$" "PLEASE INPUT THE SOURCE AND THE ;退出的信息提示 FILENAME",0DH,0AH,'$' ;提示输入文件的资源地址和文件名 INPUT_MSG2 DB " YOU CAN INPUT AGAIN IF YOU INPUT THE WRONG 6
CODE!",0DH,0AH DB " TO CONTINUE!",0DH,0AH,'$' INPUT_MSG3 DB " CHOOSE 'Y' TO INPUT THE CODE AGAIN,PRESS ANY OTHER KEY ; 加 密 时 , 确 认 是 否 重 新 输 入 密 码 的 提 示 YOU CAN INPUT AGAIN IF YOU INPUT THE WRONG CODE!",0DH,0AH DB " ***PAY ATTENTION: IF YOU INPUT THE WRONG CODE,THE FILE WOULD BE DESTROYED!***",0DH,0AH DB " CHOOSE 'Y' TO INPUT THE CODE AGAIN,PRESS ANY OTHER KEY TO CONTINUE!",0DH,0AH,'$' ENCRY_MSG DB " ;解密时,警告及确认是否重新输入密码的提示 THE FILE HAS BEEN ENCRYPTED!",0DH,0AH,0DH,0AH,'$' DECRY_MSG DB " THE FILE HAS BEEN DECRYPTED!",0DH,0AH,0DH,0AH,'$' ;加密完成后的提示 ;解密完成后的提示 DB CODE_MSG DB "BUT IF YOU INPUT THE WRONG NUMBER,THE FILE WOULD BE DESTROYED!",0DH,0AH,'$' "PLEASE INPUT THE CODE AND IT SHOULD BE DIGIT!",0DH,0AH,'$' ;提示输入密码,并且密码为数字 4、关于一些变量的说明 CHOICE BUF BUF_2 DB ? DB ? DB 20 DB ? DB 20 DUP(0) DB 20,? DB 20 DUP(?),? FINPTR FNAME_IN NUMBER_IN DW ? ;保存用户选择项 ;存放文件的地址 ;存放密码的缓冲区 ;存放文件名的缓冲区的前两个字节 ;实际存放文件名的缓冲区 ;文件代号 USE16 ;数据段 5、基本格式 SEGMENT DATA … DATA ENDS (8)堆栈段设计 因为不需要进行对堆栈段进行进行复杂的使用,因为定义也就相对简单。 STACK ;堆栈段 USE16 STACK SEGMENT DB 200 DUP(0) STACK ENDS 7
按上述堆栈段一般的定义方式即可 2、详细设计 (1)程序中用到的宏定义及其说明 CRLF MACRO ;回车换行符的宏定义 AH,2 DL,0AH 21H DL,0DH 21H MOV MOV INT MOV INT ENDM FCLOSE MACRO NUMBER AH,3EH BX,NUM 21H MOV MOV INT ENDM ;关闭文件的宏定义,参数为 文件代号 ;3EH 为关闭一个文件的功能调用 ;(BX)为文件代号 FOPEN MACRO FILENAME,TYPE,NUMBER ;打开文件的宏定义,参数 MOV AL,TYPE AH,3DH DX,FILENAME 21H NUMBER,AX MOV LEA INT MOV ENDM 为 文件名,属性,文件代号 ;(AL)=0 为读文件,(AL)=1 为写 文件,(AL)=2 为读/写文件 ;3DH 为打开文件的系统功能调用 ;DS:[DX]为字符串地址 ;(AX)为文件代号 FREAD MACRO NUMBER,BUF,SIZE ;读文件的宏定义,参数为 文件代号,缓冲区偏移地址,要读的字节个数 ;3FH 为读文件的功能调用,从文件或设备读入 ;(BX)为文件代号 ;(CX)为写盘字节数 ;DS:[DX]为缓冲区首址 ;(AX)为实际读入的字节数 AH,3FH BX,NUMBER CX,SIZE DX,BUF 21H MOV MOV MOV LEA INT ENDM FWRITE MACRO NUMBER,BUF,SIZE ;写文件的宏定义,参数为 8
分享到:
收藏