文档详情

基于汇编语言的文件加密和解密实验报告.doc

发布:2017-06-17约3.4千字共9页下载文档
文本预览下载声明
贵州大学计算机科学与信息学院 计算机科学与技术系 实验报告纸 课程名称:实验日期:姓名:学号:实验序号:指导教师:实验成绩: 实验名称实验目的 2.掌握文件代号式磁盘管理程序的设计方法。 实验环境 Windows XP,masm宏汇编,link连接程序 四、实验内容实验内容算法描述及实验步骤 ‘异或’运算为二元逻辑运算,运算规则为:参加运算的两位相同时结果为0,相异时结果为1。 ‘异或’运算的特点:某逻辑变量与0异或时其值不变,与1异或时其值取反。若一字符字节与全1字节(FFH)异或,各位同时变反,原字符信息不可读出,可达到加密的目的。若重复上述操作,该字节将恢复原值。所以同一程序既可以实现加密也可实现解密。 2.文件缓冲区的设置 程序中应为读入的文本设置一个缓冲区,当缓冲区大于文件长度时,文件读入功能能自动获取读入文本的长度,当缓冲区小于文件长度时,文件读入功能将给出缓冲区满错误提示信息。 3.磁盘代号式文件读写操作的步骤 (1)从键盘输入待处理文件名,在文件名字符串后加0,形成ASCIIZ串。 (2) 打开待处理文件,保存文件代号。 (3)读文件。文件内容读入缓冲区。保存读入字节数。 (4)循环处理缓冲区中的文件字节(本例中为异或FFH) (5)将文件指针移回到文件头。 (6)写文件。 (7)关闭文件。 3、源程序代码 DATA SEGMENT FNAME DB 40 DB ? DB 40 DUP(?) HANDLE DW ? LEN DW ? BUF DB 2000 DUP(?) str db YUELI 085# 2010(1)grade,0DH,0AH,$ INNAME DB Please input the files that locked or unlocked:$ OPENR DB 0DH,0AH,open error!,0DH,0AH,$ READR DB 0DH,0AH,read error!,0DH,0AH,$ WRR DB 0DH,0AH,write error!,0DH,0AH,$ MPTR DB 0DH,0AH,move error!,0DH,0AH,$ DATA ENDS STACK SEGMENT PARA STACK STACK DW 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: mov ax,data mov ds,ax mov ah,9 mov dx,offset str int 21h LEA DX,INNAME CALL DISPSTR ;提示输入文件名 LEA DX,FNAME MOV AH,0AH INT 21H ;从键盘接受文件名 MOV AL,FNAME+1 MOV AH,0 MOV BX,AX MOV [BX+FNAME+2],0 ;形成ASCIZ串 LEA DX,FNAME+2 MOV AX,3D02H INT 21H ;打开文件 JC OPENE MOV HANDLE,AX ;保存文件代号 MOV BX,AX MOV CX,2000 LEA DX,BUF MOV AH,3FH INT 21H JC REDEE MOV LEN,AX ;保存读入字节数 MOV CX,AX ;传送读入字节数 DEC CX LEA BX,BUF LOP: XOR BYTE PTR[BX],0FFH
显示全部
相似文档