欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    文件加密实验报告.docx

    • 资源ID:2119514       资源大小:233.90KB        全文页数:41页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    文件加密实验报告.docx

    1、文件加密实验报告文件加密实验报告 院 系 : 专 业 : 班 级 : 学 号 : 姓 名 : 指导教师 : 1、需求分析 3 2、系统设计 33、软件开发 164、软件测试 165、特点不足 216、过程和体会 257、源码和说明 28 一、需求分析1、题目要求编写一个文件加密程序enc,对于任意的文件进行加密和解密,加密算法何以自选。程序功能: 1程序带有3个命令行参数,依次为运行模式、密钥、文件名。Enc e 密钥 文件名 对于文件进行加密Enc d 密钥 文件名对于文件进行解密 要求加密后的文件进行解密能够完全恢复成原文件。2、需求分析重点考察1基本的算术运算和逻辑位运算。 2用汇编实现

    2、简单的数据结构。 3INT21H系统功能调用中有关文件、目录的操作。4可执行程序的参数使用。5综合解决问题的能力。2、系统设计1、概要设计(1)设计思路1、要对一个文件进行加密处理首先要将其打开,汇编中可用3DH功能调用按路径打开文件。2、打开文件之后便是将其调入内存之中,因而用到3FH功能调用,从文件或设备中读入。3、按写好的加密程序对其进行加密处理。4、将加密后的内存中的文件重新写入覆盖掉原文件,可用40H功能调用,向文件或设备写入。5、覆盖掉原文件后再关闭文件,可用3EH功能调用,关闭文件。6、解密部分与加密部分相仿,先打开文件,读入内存,解密后重新写入覆盖原文件,最后关闭文件(2)加密

    3、原理利用汇编语言读文件功能调用,将文件数据每次读一个字节至内存之中,输入加密密匙,将其由字符转变成数字,与内存中的文件内容相加,改变文件内容,再写入覆盖文件,完成加密处理。(3)解密原理解密原理与加密原理基本一致,将文件数据每次读一个字节至内存之中,输入加密密匙,将其由字符转变成数字,由内存中的待解密的文件内容减去密匙,改变文件内容,再写入覆盖文件,完成解密处理。(4)模块划分程序分成三大模块1、主模块对文件进行读写操作及输出信息提示,并调用加密和解密模块。2、加密模块调用加密子程序对文件进行加密处理,并返回主程序。3、解密模块调用解密子程序对文件进行解密处理,并返回主程序。(5)模块之间关系

    4、程序以主模块为框架,依次读入一个文件字节后,再输入加密密匙,将密匙处理后,调用加密子模块对文件字节加密处理(本质为文件字符ACSII码+处理后密匙大小),加密完成后返回主模块,继续读入下一个字符,调用加密模块加密,直至所有文件字符读完为止;主模块与解密模块之间的关系也基本同上!(6)总体结构及流程图1.进入选择菜单,选择进行加密、解密处理或者了解程序及作者信息,又或者退出。2.选择 加密 后,输入文件路径及文件名打开文件,将文件一个字符一个字符读入内存,输入加密密匙,调用加密子函数对文件字符一个一个加密处理直至完成整个文件加密,加密完成后返回选择菜单,继续进行选择操作。3.选择 解密 后,基本

    5、与加密一致,仅仅是解密时完成一个加密的逆过程。4.选择 了解介绍 后,会有关于软件和设计者的信息。5.选择 退出 后,会返回上级菜单。6.总体结构流程图输出关于程序和作者的信息输入=3?进入选择菜单,根据提示进行操作选择 开始YN 输入=1?Y依次输入文件路径和文件名及加密密匙,打开并读入文件并对密匙进行处理N加密完成后,写入覆盖源文件,并关闭文件,返回选择菜单输入=2?Y依次输入文件路径和文件名及解密密匙,打开并读入文件并对密匙进行处理N解密完成后,写入覆盖源文件,并关闭文件,返回选择菜单 结束(7)数据段设计1、首先是选择菜单的设计 OPTION_MSG DB 0DH,0AH DB * W

    6、ELCOME TO USE THIS SOFTWARE *,0DH,0AH DB YOU CAN USE THIS SOFTWARE TO ENCRPT AND DECRYRPT ,0DH,0AH DB INPUT 1 TO ENCRYPT!,0DH,0AH DB INPUT 2 TO DECRYPT!,0DH,0AH DB INPUT 3 TO GET THE INTRODUCTION!,0DH,0AH DB INPUT OTHERS TO QUIT!,0DH,0AH DB PLEASE INPUT THE NUMBER TO MAKE CHOICE!,0DH,0AH,$;选择菜单界面,输入

    7、1进行加密,2进行解密,3了解软件信息,输入其它退出2、程序介绍和软件设计者信息INTRO_MSG DB 0DH,0AH DB * WELCOME TO USE THIS SOFTWARE *,0DH,0AH DB THIS SOFTWARE IS A VERY SIMPLE TOOL!,0DH,0AH DB THIS KIND OF MEANS IS EASY TO USE AND CAN HELP YOU TO PROTECT YOUR PRIVACY,0DH,0AH DB YOU CAN USE IT TO ACHIEVE ENCRYPTION AND ON,0DH,0AH DB SCH

    8、OOL:HUST UNIVERSITY CLASS: CS 0907 CLASS,0DH,0AH DB DESIGNER: LIU KE NAN STUDENT ID:U200915075,0DH,0AH,0DH,0AH,0DH,0AH,$3、关于一些信息提示ERROR_MSG DB ERROR!,0DH,0AH,$ ;提示选择或输入有误的信息ERROR_MSG1 DB PLEASE INPUT DIGIT AND DONT INPUT ANY OTHER CHARS!,0DH,0AH,$ ;当输入不是数字时,给出错误提示ERROR_MSG2 DB THE CODE MAYBE TOO BID

    9、 ,PLEASE INPUT AGAIN! ,0DH,0AH,$ ;当输入数字过大时造成溢出,给出错误提示QUIT_MSG DB PRESS ANY KEY TO QUIT$ ;退出的信息提示INPUT_MSG DB PLEASE INPUT THE SOURCE AND THE FILENAME,0DH,0AH,$ ;提示输入文件的资源地址和文件名INPUT_MSG2 DB YOU CAN INPUT AGAIN IF YOU INPUT THE WRONG CODE!,0DH,0AH DB CHOOSE Y TO INPUT THE CODE AGAIN,PRESS ANY OTHER K

    10、EY TO CONTINUE!,0DH,0AH,$ ;加密时,确认是否重新输入密码的提示INPUT_MSG3 DB 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,$ ;解密时,警告及确认是否重新输入密码的提示

    11、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 BUT IF YOU INPUT THE WRONG NUMBER,THE FILE WOULD BE DESTROYED!,0DH,0AH,$CODE_MSG DB PLEASE INPUT THE CODE AND IT SHOULD BE DIGIT!,0DH,0AH,$ ;提示输入密码,并且密码为数字4、关

    12、于一些变量的说明CHOICE DB ? ;保存用户选择项BUF DB ? ;存放文件的地址BUF_2 DB 20 ;存放密码的缓冲区 DB ? DB 20 DUP(0)FINPTR DB 20,? ;存放文件名的缓冲区的前两个字节FNAME_IN DB 20 DUP(?),? ;实际存放文件名的缓冲区NUMBER_IN DW ? ;文件代号5、基本格式DATA SEGMENT USE16 ;数据段 DATA ENDS(8)堆栈段设计因为不需要进行对堆栈段进行进行复杂的使用,因为定义也就相对简单。STACK SEGMENT USE16 STACK ;堆栈段 DB 200 DUP(0)STACK

    13、ENDS按上述堆栈段一般的定义方式即可2、详细设计(1)程序中用到的宏定义及其说明CRLF MACRO ;回车换行符的宏定义 MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H ENDMFCLOSE MACRO NUMBER ;关闭文件的宏定义,参数为 文件代号 MOV AH,3EH ;3EH为关闭一个文件的功能调用 MOV BX,NUM ;(BX)为文件代号 INT 21H ENDM FOPEN MACRO FILENAME,TYPE,NUMBER ;打开文件的宏定义,参数 为 文件名,属性,文件代号 MOV AL,TYPE ;(AL)=0为读文件,

    14、(AL)=1为写 文件,(AL)=2为读/写文件 MOV AH,3DH ;3DH为打开文件的系统功能调用 LEA DX,FILENAME ;DS:DX为字符串地址 INT 21H MOV NUMBER,AX ;(AX)为文件代号 ENDM FREAD MACRO NUMBER,BUF,SIZE ;读文件的宏定义,参数为 文件代号,缓冲区偏移地址,要读的字节个数 MOV AH,3FH ;3FH为读文件的功能调用,从文件或设备读入 MOV BX,NUMBER ;(BX)为文件代号 MOV CX,SIZE ;(CX)为写盘字节数 LEA DX,BUF ;DS:DX为缓冲区首址 INT 21H ;(A

    15、X)为实际读入的字节数 ENDM FWRITE MACRO NUMBER,BUF,SIZE ;写文件的宏定义,参数为 文件代号,缓冲区偏移地址,要写的字节个数 MOV AH,40H ;40H为写文件的功能调用, 向文件或设备写入 MOV BX,NUMBER ;(BX)为文件代号 MOV CX,SIZE ;(CX)为写盘字节数 LEA DX,BUF ;DS:DX为缓冲区首址 INT 21H ;(AX)为实际写盘字节数 ENDMPAUSE MACRO ;暂停的宏定义 MOV AH,07H ;07H为直接控制台输入,无直接显示 INT 21H ENDMQUIT MACRO ;返回DOS环境的宏定义

    16、MOV AH,4CH ;4CH为终止当前程序并返回调用程序的功能调用 INT 21H ENDMREAD MACRO A ;输入字符串的宏定义,10号系统功能调用 LEA DX,A MOV AH,0AH INT 21H ENDMSHIFT MACRO NUMBER ;改变文件读写指针的宏定义,参数为 文件代号 MOV AH,42H ;42H为移动文件读写指针的功能调用 MOV BX,NUMBER ;(BX)为文件代号 MOV DX,-1 ;(DX):(AX)为新的指针位置 MOV CX,-1 ;(CX):(DX)为位移量 MOV AL,1 ;(AL)=0为绝对移动,(AL)=1为相对移 动,(A

    17、L)=2为绝对倒移 INT 21H ENDM WRITE MACRO A ;输出字符串的宏定义,9号系统功能调用 LEA DX,A MOV AH,09H INT 21H ENDM(2)各模块的实现算法及流程图1、主模块算法(1)调用WRITE宏定义输出选择菜单(2)使用1号系统功能调用输入保存用户的选择至CHOICE变量之中(3)根据用户的选择项进入不同的功能,输入为3时输出程序及用户信息,输入为2或者1时继续向下运行,当不是那三个选项时即跳向退出(4)调用WRITE宏定义输出提示,让用户输入文件路径及文件名(5)将文件地址保存并调用FOPEN宏定义将文件打开(6)如打开成功(即CF-0)则向

    18、下继续运行,失败则输出错误信息,返回选择菜单(7)比较用户的输入选项,若为1则跳向加密模块,为2则跳向解密模块2、主模块流程图 开始调用WRITE宏定义(9号调用)输出选择菜单使用1号系统功能调用,并将用户的选择项保存在CHOICE中CHOICE=3?YN使用WRITE宏定义(9号系统功能调用)输出程序及设计者的介绍 1CHOICE=1?CHOICE=2? 1YNCF=0?调用FOPEN宏定义(打开文件的宏)打开该文件调用READ宏定义(10号调用)将输入的文件地址及文件名保存调用WRTIE宏定义(9号调用)输出提示信息,让用户输入文件的路径及文件名 结束 输出结束的信息并返回上级菜单NNY调

    19、用WRITE宏定义输出错误信息提示,并返回选择菜单CHOICE=2?Y进入解密子模块进入加密子模块 开始N3、加密模块算法(1)调用WRITE宏定义(9号调用)输出提示,让用户输入加密密匙(2)调用READ宏定义(10号调用)读入用户输入的密码,保存到BUF_2缓冲区中。(3)将输入的密码由字符转变成数字,并且做出判断,若用户输入的字符长度过长造成溢出,或者输入了非数字字符时,都会返回提示重新输入密码,若输入的密码符合要求,则将转变成数字后的密码重新保存到BUF_2缓冲区中(4)调用WRITE宏定义输出提示,由用户选择是否重新输入密码,并调用1号调用读入,判断字符是否为y或者Y。如不是则不重新

    20、输入,否则重新输入密码。(5)读入文件的一个字符,并判断理论读入的和实际读入的数目是否一致,如果一致则表示文件还没有读完,若不一致则表示文件已经读完,跳出加密。(6)未读完时,将文件字符的ACSII码放入CH中,转换成数字的密码放入CL中,将CH与CL相加,重新放入BUF中,依次重复直至文件每个字符都完成加密。(7)所有文件字符都完成加密后,用FCLOSE宏定义,关闭文件,并用WRITE宏定义输出加密完成的提示。 开始4、加密模块流程图给出输入密码的提示并调用10号调用输入密码,并保存在BUF_2缓冲区中为不覆盖掉之前的输入,进行回车换行以CX为计数器,储存密码长度,AX存放由字符转换成数字的

    21、密码,依次读一个密码字符到BL中输出错误提示,要求输入为数字 1BL9或者BL0?YN输出错误提示,用户的密码太大,返回重新输入密码AX是否产生进位或者溢出?AX=10*AX+BX存放转变后的数字BL=BL-30H变成数字,并拓展到BX 1在读入一个字符至BL中,进行字符到数字的转换 CX=0?YNN从文件读入一个字符跳转至输入密码处,重新输入密码AL=Y或者y?输出信息提示:是否重新输入密码,调用1号调用YYN 2 2理论读入值CX=实际读入值AX? 结束文件的全部字符已经全部完成加密处理,调用FCLOSE 宏定义关闭文件N继续从文件读入一个字符,进行2加密处理调用FWRITE宏定义,将加密

    22、后的字符写入文件,覆盖掉原来的内容读入文件字符存入CH中,密码存放到CL中,CL+CH后重新放入存放文件字符的BUF中Y5.解密算法模块(1)调用WRITE宏定义(9号调用)输出提示,让用户输入加密密匙(2)调用READ宏定义(10号调用)读入用户输入的密码,保存到BUF_2缓冲区中。(3)将输入的密码由字符转变成数字,并且做出判断,若用户输入的字符长度过长造成溢出,或者输入了非数字字符时,都会返回提示重新输入密码,若输入的密码符合要求,则将转变成数字后的密码重新保存到BUF_2缓冲区中(4)调用WRITE宏定义输出提示,由用户选择是否重新输入密码,并调用1号调用读入,判断字符是否为y或者Y。

    23、如不是则不重新输入,否则重新输入密码。(5)读入文件的一个字符,并判断理论读入的和实际读入的数目是否一致,如果一致则表示文件还没有读完,若不一致则表示文件已经读完,跳出解密。(6)未读完时,将文件字符的ACSII码放入CH中,转换成数字的密码放入CL中,将CH与CL相减,重新放入BUF中,依次重复直至文件每个字符都完成解密。(7)所有文件字符都完成解密后,用FCLOSE宏定义,关闭文件,并用WRITE宏定义输出解密完成的提示。6、解密模块流程图根据加密算法得知解密算法实际是加密算法的逆过程,仅仅是文件字符加/减密码上是相反的,其余完全一致,所以此处流程图可参照加密算法模块流程图,略去!(3)各

    24、模块参数及寄存器使用说明1、主模块参数及寄存器说明CHOICE 用来保存用户选择项FINPTR 用来存放文件名的缓冲区的前两个字节FNAME_IN 用来实际存放文件名的缓冲区AX 用来传递数据及系统功能调用BX 用来保存临时数据DX 用用来系统功能调用2、加密模块极其寄存器说明BUF 用于存放文件字符BUF_2 用于将用户输入的密码保存的缓冲区CHOICE 用来保存用户的选择AX 用来系统功能调用,保存数据,传递数据BX 用来传递数据及保存临时数据CX 用于计数器DX 用于系统功能调用DI 用于传递临时数据,参加运算SI 用于传递临时数据,参加计算3、解密模块极其寄存器说明BUF 用于存放文件

    25、字符BUF_2 用于将用户输入的密码保存的缓冲区CHOICE 用来保存用户的选择AX 用来系统功能调用,保存数据,传递数据BX 用来传递数据及保存临时数据CX 用于计数器DX 用于系统功能调用DI 用于传递临时数据,参加运算SI 用于传递临时数据,参加计算3、软件开发此程序用Notpad+编写,利用MASM60进行编译和连接生成可执行文件,用TD进行调试改错。4、软件测试1、菜单界面2、输入1进入加密功能会提示输入文件路径和文件名3、输入路径后会提示输入密码4、会给出输入密码的提示,并要求输入的密码为数字5.输入密码后不重新输入,会给出加密完成的提示,以下是加密前和加密后文件的差别!加密前加密

    26、后6、以下是WORD,PPT,EXCEL等文件加密前后的差距加密前加密后7、输入2进入解密功能 7、进入解密功能后,和加密情况一致,输入与加密情况相同的密码后,各文件解密情况如下所示8、输入3后了解程序和用户信息9.输入其它任意键后会退出该程序5、特点与不足 这个程序在最基本的加密解密功能上加入了一些其它安全措施,对防止可能因为输错密码带来的不良影响有一定帮助,但也仍有很多需要改进的地方!1、加密安全措施(1)输入的密码必须为数字,当不为数字时会报错,并提示重新输入密码(2)为防止因为密码太长,导致溢出的情况,也有对应的措施,当输入的密码太大时,会有错误提示,警告输入的密码过于巨大,并且返回重

    27、新输入密码(3)当输入的密码虽然符合格式,但因为一时失误打错了数字的时候也有可以补救的措施,在输完密码后,会有是否重新输入密码的提示,用户可以根据情况确定是否重新输入当输入Y或者y后,会有提示重新输入,输入其它的会提示加密完成2、解密安全措施(1)和加密一样,加密密匙是数字,那么解密密匙对应的也是数字,输入的解密密匙中有不为数字的字符便会报错,并提示重新输入(2)与加密一样,解密也为了防止溢出,输入的密码也不能太大,输入过大的数字时会报错,并提示重新输入密码(3)解密也会因为输错密码而导致文件解密失败,所以解密也会有是否重新输入密码的提示,并且还有解密失败会导致文件损毁的警告(4)选择输入Y或者y后会有返回重新输入密码,输入其它的字符会提示完成解密3、其它特色介绍(1)这个菜单界面还加入了关于程序和程序设计者的介绍,在选择菜单里面的选项输入3即可,介绍下面继续


    注意事项

    本文(文件加密实验报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开