帮我看看程序,简易文件加密解密,为什么文件过大就不能加密解密,还有就是word、图片等不能解密
时间:2011-04-20
来源:互联网
;************************************主程序中用到的所有宏定义*********************************************************
fopen macro filename,type,handle ;打开文件的宏(文件名,属性,文件代号)
mov al,type
mov ah,3dH
lea dx,filename
int 21H
mov handle,ax
endm
pianyi macro handle ;改变文件读写指针(文件代号)
mov ah,42h
mov bx,handle
mov dx,0
mov cx,0
mov al,0
int 21h
endm
fwrite macro handle,buffer,size ;写文件的宏(文件代号,缓冲区偏移地址,要写的字节个数)
mov ah,40H
mov bx,handle
mov cx,size
lea dx,buffer
int 21H
endm
fread macro handle,buffer,size ;读文件的宏(文件代号,缓冲区偏移地址,要读的字节个数)
mov ah,3fH
mov bx,handle
mov cx,size
lea dx,buffer
int 21H
endm
fclose macro handle ;关闭文件的宏(文件代号)
mov ah,3eH
mov bx,handle
int 21H
endm
pause macro ;暂停的宏
mov ah,07H
int 21H
endm
quit macro ;返回DOS的宏
mov ax,4c00H
int 21H
endm
print macro msg ;提示信息的串输出宏
mov dx,offset msg
mov ah,09H
int 21H
endm
gets macro msg ;文件名的串输入宏
lea dx,msg
mov ah,0AH
int 21H
endm
;***************************************主程序开始**************************************************
;----------------------------------------数据段--------------------------------------------------
data segment
buffer db 512 dup(?) ;为文件内容数据准备的缓冲区
buf_size dw 512 ;缓冲区大小
finptr db 12,? ;输入文件名缓冲区前两个字节
fname_in db 12 dup(?),? ;为文件名准备的缓冲区
handle_in dw ? ;输入文件代号
error1 db "open file error!",0dH,0aH,'$' ;出错提示信息
quit_msg db "press any key to continue...$"
in_msg1 db "input the source file name:",0DH,0AH,'$' ;输入提示信息
succmsg1 db "encry successfully!",0DH,0AH,'$'
succmsg2 db "decry successfully!",0DH,0AH,'$'
op_msg1 db 0DH,0AH ;提示信息
db "------ encry and decry -------",0DH,0AH
db "| 1-encry,2-decry,other-quit |",0DH,0AH
db "| please choice",0DH,0AH
db "|->",'$'
lines db 0DH,0AH,'$'
oprand db ? ;用户选择
readsize dw ? ;一次读入文件的字符个数
data ends
;-----------------------------------------代码段--------------------------------------------------------
code segment
assume cs:code,ds:data,es:data
main proc far
start:
mov ax,data
mov ds,ax
mov es,ax
start_loop:
print op_msg1 ;选择加解密提示信息
mov ah,01H ;键盘输入单字符
int 21H
mov oprand,al ;存放用户选择的值
print lines ;换行
cmp oprand,'1' ;判断输入值
jz input_src_fname
cmp oprand,'2'
jz input_src_fname
jmp exit
input_src_fname: ;输入源文件名
print in_msg1 ;文件名的提示信息
gets finptr ;键盘输入文件
lea bx,fname_in ;文件名的首地址
mov al,finptr[1] ;缓冲区长度给al
mov ah,0
add bx,ax ;指针跳到该段内存的末地址
mov byte ptr [bx],0 ;
print lines ;换行
fopen fname_in,2,handle_in ;打开文件
jnc lg
print error1 ;打开失败提示
jmp start_loop
lg: cmp oprand,'2'
jz start_decry
start_encry:
call encryex ;调用加密子程序
jmp start_loop
start_decry:
call decryex ;调用解密子程序
jmp start_loop
exit:
print quit_msg ;结束提示消息
pause ;暂停
quit ;退出
main endp
;------------------------------------------加密模块--------------------------------------------
encryex proc near
mov ax,buf_size ;一次读入的最大字节数为512
mov readsize,ax
encryex_start:
fread handle_in,buffer,readsize ;读取源数据
mov readsize,ax
pianyi handle_in ;保存读取的个数
call encry ;执行加密
fwrite handle_in,buffer,readsize ;写加密数据
cmp readsize,512
jb encryex_end ;读文件结束
jmp encryex_start
encryex_end: ;加密结束
print lines ;输出回车换行
fclose handle_in
print succmsg1
ret
encryex endp
;-------------------------------------------解密模块---------------------------------------------
decryex proc near
mov ax,buf_size ;一次读入的最大字节数为512
mov readsize,ax
decryex_start:
fread handle_in,buffer,readsize ;读取加密数据
mov readsize,ax
pianyi handle_in ;将指针移到文件头
call decry ;执行解密
fwrite handle_in,buffer,readsize ;写解密数据
cmp readsize,512
jb decryex_end ;读取完成
jmp decryex_start ;继续读取文件
decryex_end: ;解密结束
print lines ;输出回车换行
fclose handle_in
print succmsg2
ret
decryex endp
;------------------------------------------加密算法子程序-------------------------------------------
encry proc near ;加密算法
mov bx,0aah
mov cx,readsize
mov si,ax
encry_start:
mov bh,[si]
add bh,bl
mov [si],bh
inc si
loop encry_start
ret
encry endp
;--------------------------------------------解密算法子程序---------------------------------------
decry proc near ;解密算法
mov bl,0aah
mov cx,readsize
mov si,ax
decry_start:
mov bh,[si]
sub bh,bl
mov [si],bh
inc si
loop decry_start
ret
decry endp
code ends
end start
;******************************************************************************************************
作者: pwzxcq889900 发布时间: 2011-04-20
恩,有时间会看看:D.
作者: va_zaixuexi 发布时间: 2011-04-20
能不能现在看看,帮帮忙,我明天要用,谢谢。
作者: pwzxcq889900 发布时间: 2011-04-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28