1. 题目
课题 3.文件加密程序
要求:A、文件名从键盘输入。
B、加密密钥从键盘输入。
思路:从原文件读取内容至缓冲区,对其加密后,重新写回文件原来的地方。
提示要点:A、加密可使用“异或”操作。
B、相关中断为 3DH,3EH,3FH,40H,42H 号系统功能调用(INT 21H)。
2. 程序总体设计方案、思路
本次程序设计总体分为六个模块,进入该程序打开文件;输入密码;读取要加密
的文件的内容;对文件内容加密;将加密后的文件写入;关闭并保存该文本,通
过界面提示进行选择来分别进入到各模块中。
1. 进入界面,根据提示操作。
2. 用键盘输入一个文件名,存到 STR1 缓冲区,用 3DH 系统功能打开文件。
3. 若输入文件名错误,则要求重新输入。
4. 用键盘输入三个字符作为密码,存到 STR2 缓冲区,并对密码进行处理。
5. 若密码大于三个字符,则要求根据提示重新输入。
6. 用 3FH 系统功能读取文件内容到 BUF 缓冲区。
7. 用对密码处理后得到的值对文件内容进行加密。
8. 用 40H 系统功能将加密后的内容写入到原来文件存储的位置。
9. 用 3EH 系统功能关闭文件。
3. 程序设计框图
开始
显示欢迎词
提示输入文件名
输入文件名
没找到文件,按 r 再试一次
打开文件成功?
Y
N
保存文件代号
提示输入密码
输入密码(小于 4 位)
密码>4 按 r 再试一次
密码小于 4 ?
Y
N
N
N
读取文件内容
读取内容成功?
Y
对文件内容进行加密/解密
加密/解密后信息写入文件
写文件成功?
Y
关闭文件
提示记住密码
结束
DB ?
DW ?
DB 256 DUP(?)
4. 源程序清单
DATA SEGMENT
STR1 DB 21
STR1A DB ?
STR1B DB 21 DUP(?)
STR2 DB 10
STR2A DB ?
STR2B DB 10 DUP(?)
STR3 DW 0
HANDLE DW ?
KEY
LEN
BUF
WELCOME DB 0AH,0DH,'
',0AH,0DH,'$'
MSG1 DB 0AH,0DH,'Please
file:',0AH,0DH,'$'
MSG2 DB
characters:',0AH,0DH,'$'
MSG3 DB 0AH,0DH,'Can not find the file in the document.Knock R(r) to try
again:',0AH,0DH,'$'
MSG4 DB 0AH,0DH,'Please
continue !:',0AH,0DH,'$'
MSG5 DB 0AH,0DH,'Please input the password less than 4 characters! Knock R(r)
to try again:',0AH,0DH,'$'
DATA ENDS
CODE SEGMENT 'code'
The code system made by meng
encode or decode
0AH,0DH,'Please
password! Any
input
the name of
the
password
remember
your
input
the
key
to
less
than
4
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,9
LEA
INT
DX,WELCOME
21H
;显示输入文件名提示语句
REP1: MOV AH,9
DX,MSG1
21H
LEA
INT
MOV AH,10
LEA
INT
MOV BL,STR1A
DX,STR1
21H
MOV BH,0
MOV STR1B[BX],0
LEA
DX,STR1B
MOV AH,3DH
MOV AL,02H
INT
21H
JC ERROR
MOV HANDLE,AX
;AL=02 为读/写文件,AH=3DH 是功能号(打开文件)
;显示输入密码提示语句
REP2: MOV AH,9
LEA
INT
LEA
DX,MSG2
21H
DX,STR2
MOV AH,10
INT
21H
STR2+1,4
ERROR1
CMP
JNB
MOV AL,STR2+2
ADD AL,STR2+3
ADD AL,STR2+4
MOV KEY,AL
REP3: MOV BX,HANDLE
;读文件
MOV CX,255
LEA
DX,BUF
MOV AH,3FH
INT21H
JC ERROR
CMP AX,0
JZ OVER3
MOV LEN,AX
MOV CX,LEN
LEA
DI,BUF
MOV AL,KEY
;AX=实际读到的字符数
;加密
ENCODE: XOR
[DI],AL
INCDI
LOOP ENCODE
MOV DX,STR3
MOV AX,4200H ;移动文件读写指针
INT21H
MOV BX,HANDLE
MOV CX,LEN
LEA
DX,BUF
;写文件
MOV AH,40H
INT21H
JC ERROR
MOV AX,LEN
ADD STR3,AX
JMP
MOV BX,HANDLE
MOV AH,3EH
INT21H
REP3
;关闭文件
ERROR: MOV AH,9
DX,MSG3
LEA
INT21H
MOV AH,1
INT21H
CMP AL,52H
REP1
JZ
CMP AL,72H
JZ REP1
JMP
OVER2
ERROR1: LEA
DX,MSG5
MOV AH,9
INT
21H
MOV AH,1
INT
21H
CMP AL,52H
Jz
CMP AL,72H
Jz
REP2
REP2
JMP
OVER2
OVER1: MOV AH,1
INT21H
OVER2: MOV AX,4C00H
INT
21H
OVER3: MOV AH,9
LEA
INT21H
JMP
DX,MSG4
OVER1
CODE ENDS
END
START
5. 程序调试结果及分析
图 1 进入界面
图 2 输入密码加密保存
图 3 原文本
图 4 加密后的文本
图 5 解密后的文本