问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用汇编语言编写 简易加密解密程序

发布网友 发布时间:2022-04-24 22:47

我来回答

3个回答

热心网友 时间:2023-10-13 22:20

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
push dx
lea dx,Str_Addr
mov ah,9
int 21h
pop dx
EndM
; -----------------------------------------
; 功能:打开指定路径下的文件。若打开成功,保存文件代号,设置进位标志;
; 否则,建立文件,保存文件代号,清进位标志
; 入口参数:dx=文件名地址,bx=文件代号保存地址
Open_File Proc Near
mov ax,3d02h ;以读写方式打开文件
int 21h
jc @@Error
mov [bx],ax ;成功打开,保存文件代号
stc ;设置进位标志
ret
@@Error: Output Open_Error
xor cx,cx ;新建文件属性
Create_File:mov ah,3ch ;建立文件
int 21h
jc Create_File ;建立不成功,尝试再建
mov [bx],ax ;成功建立,保存文件代号
clc ;清进位标志
ret
Open_File EndP
; -----------------------------------------
; 功能:对字符串缓冲区中的内容逐个字符加密
; 入口参数:si=字符串地址,cx=字符数
Encode_Str Proc Near
push si
push cx
lea di,Handle_File
mov al,[di][88] ;读取密钥
@@Encoding: xor byte ptr [si],al ;异或,第一步加密
push cx
mov cx,188
rol byte ptr [si],cl ;循环左移188位,第二步加密
pop cx
inc si ;下一个字符地址
loop @@Encoding ;处理下一个字符
pop cx
pop si
ret
Encode_Str EndP
; -----------------------------------------
; 功能:对字符串缓冲区中的内容逐个字符加密
; 入口参数:si=字符串地址,cx=字符数
Uncode_Str Proc Near
push si
push cx
lea di,Handle_File
mov al,[di][88] ;读取密钥
@@Uncoding: push cx
mov cx,188
ror byte ptr [si],cl ;循环右移188位,第一步解密
pop cx
xor byte ptr [si],al ;异或,第二步解密
inc si ;下一个字符地址
loop @@Uncoding ;处理下一个字符
pop cx
pop si
ret
Uncode_Str EndP
; -----------------------------------------
Handle_File dw ?,?,? ;文件代号
File_Name1 db 'c:\masm\rory00.txt',0 ;未加密的文本文件
File_Name2 db 'c:\masm\rory01.txt',0 ;加密后的文本文件
File_Name3 db 'c:\masm\rory02.txt',0 ;解密后的文本文件
Open_Error db 'Open file error,creat a new file.',13,10,13,10,7,'$'
Input_New db 'Input the new information:',13,10,'$'
Press_Key db 13,10,13,10,'The Encode and Uncode have been completed.',7
db 13,10,13,10,'Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
; -----------------------------------------
; 打开或建立三个文件
lea dx,Buffer ;文本内容处理缓冲区
mov cx,0ffc0h ;预留32个字的堆栈空间
sub cx,dx ;设置读写一次文件内容的字节数
mov bp,cx ;暂存
lea dx,File_Name2 ;文件名地址
lea bx,Handle_File[2] ;文件代号保存地址
call Open_File ;打开指定路径下的文件。若打开成功,保存文件代号;否则,建立文件,保存文件代号
lea dx,File_Name3 ;文件名地址
lea bx,Handle_File[4] ;文件代号保存地址
call Open_File
lea ax,@@jump000
push ax
call @@Locate_01
@@Locate_00:lea dx,File_Name1 ;文件名地址
lea bx,Handle_File ;文件代号保存地址
call Open_File
jc Read_File
; -----------------------------------------
; 若是新建文件,输入文件内容,实施加密,写到另一个文件
Input_Str: Output Input_New ;提示输入新信息
lea dx,Buffer ;文本内容处理缓冲区
mov ah,0ah ;键盘输入字符串
int 21h
lea si,Buffer[1] ;实际输入的字符个数地址
lodsb ;读取实际输入的字符数
test al,0ffh
jz Input_Str ;若直接回车,未输入任何字符,再次提示输入新信息
mov dx,si ;数据缓冲区地址
mov cl,al ;实际输入的字符数
xor ch,ch
mov bx,Handle_File ;读取未加密的文本文件代号
Write_Uncod:mov ah,40h
int 21h
jc Write_Uncod ;写入失败,尝试再写
call Encode_Str ;逐个字符加密
mov dx,si ;数据缓冲区地址,要写入的字符数已在cx中
mov bx,Handle_File[2] ;文件代号
Write_Coded:mov ah,40h
int 21h
jc Write_Coded ;写入失败,尝试再写
jmp @@Uncode
@@Locate_01:pop ax
ret
; -----------------------------------------
; 若成功打开文件,读取文件内容,实施加密,写到另一个文件
Read_File: lea dx,Buffer ;文本内容处理缓冲区
mov cx,bp
mov bx,Handle_File ;读取未加密的文本文件代号
mov ah,3fh ;读文件内容
int 21h
jc Read_File ;读文件失败,尝试再读
test ax,0ffffh
jz @@Uncode ;若实际读取的字节数为0,结束读写操作
lea si,Buffer
mov cx,ax
call Encode_Str ;逐个字符加密
mov dx,si ;数据缓冲区地址,要写入的字符数已在cx中
mov bx,Handle_File[2] ;读取目标文件代号
Write_File: mov ah,40h ;写文件
int 21h
jc Write_File ;写文件失败,尝试再写
jmp Read_File
; -----------------------------------------
; 修改子程序Encode_Str和Encode_Str中的循环移位次数
@@jump000: mov byte ptr Encode_Str[13],6
mov byte ptr Uncode_Str[11],6
lea ax,@@Locate_00
push ax
call @@Locate_01
; -----------------------------------------
; 将加密完的内容解密,写入第三个文本文件
@@Uncode: xor dx,dx
xor cx,cx
Loca_Seek1: mov bx,Handle_File[4] ;读取解密后的文本文件代号
mov ax,4200h ;移动文件指针至文件头
int 21h
jc Loca_Seek1
Loca_Seek2: mov bx,Handle_File[2] ;读取加密后的文本文件代号
mov ax,4200h ;移动文件指针至文件头
int 21h
jc Loca_Seek2
lea dx,Buffer ;文本内容处理缓冲区
Read_File1: mov cx,bp
mov bx,Handle_File[2] ;读取加密后的文本文件代号
mov ah,3fh ;读文件内容
int 21h
jc Read_File1 ;读文件失败,尝试再读
test ax,0ffffh
jz Close_File1 ;若实际读取的字节数为0,结束读写操作,关闭文件
lea si,Buffer
mov cx,ax
call Uncode_Str ;逐个字符解密
mov dx,si ;数据缓冲区地址,要写入的字符数已在cx中
mov bx,Handle_File[4] ;读取解密后的文本文件代号
Write_File1:mov ah,40h ;写文件
int 21h
jc Write_File1 ;写文件失败,尝试再写
jmp Read_File1
Close_File1:mov bx,Handle_File ;读取未加密的文本文件代号
mov ah,3eh ;关闭文件
int 21h
jc Close_File1
Close_File2:mov bx,Handle_File[2] ;读取加密后的文本文件代号
mov ah,3eh ;关闭文件
int 21h
jc Close_File2
Close_File3:mov bx,Handle_File[4] ;读取解密后的文本文件代号
mov ah,3eh ;关闭文件
int 21h
jc Close_File3
Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;结束程序
int 21h
ALIGN 10h ;节对齐
Buffer db 255 ;文本内容处理缓冲区
Code ENDS
END Start ;编译到此结束

热心网友 时间:2023-10-13 22:21

win32的还是控制台的??

热心网友 时间:2023-10-13 22:21

不干,啦啦啦啦,要么在这回答,才不到你QQ邮箱里去
汇编语言写个凯撒密码加密和解密的!

著名的凯撒加密算法就是一种简单的替代加密法,它是将明文中每一个字符用右移3位并以26个字符为模的替代(A由D替代,B由E替代,··…—,W由Z替代,X由A替代,Y由B替代,Z由C替代)。所以你的汇编很简单呀,按1的时候,你用一个寄存器指向明文,然后对寄存器指向的数据做加3,然后mod26的处理...

汇编语言编程:数字加密,数字字符0~9,分别对应小写字母a~g

‘a'的ASCII码是61h 两者差了31h 因此,加密时数字字符加31h,就变成了对应的小写字母字符。解密时小写字母减去31h就成了数字字符。例如:mov al,'1'add al,31h

学解密是否一定要学汇编语言?

我还是建议学学汇编,对解密有很大帮助,不论是动态分析还是静态反汇编,都需要汇编的知识,一点不懂是很麻烦的。

加密解密全攻略目录

第1章深入理解加密解密 1.1 详解加密解密技术基础,包括基本概念和原理。1.2 探索相关术语,掌握常见的汇编语言操作指令。1.3 讨论软件解密策略,以及注册保护机制的解析。1.4 遇到问题时的解决策略与经验分享。1.5 总结关键要点,为后续学习打下基础。第2章代码分析技术详解 2.1 介绍代码分析的基础...

如何用易语言做个EXE文件的加密解密程序 我需要全部的源代码 谢谢 可 ...

你好!如果已经生成了EXE,并且源代码不是自己写的,那么,是无法查看它的源代码的。顶多只能对其进行反汇编,看到的是晦涩难懂的汇编语言。打字不易,采纳哦!

DEC汇编语言

DEC汇编语言中的指令主要用于执行算术减一操作,包括对累加器(A)、寄存器(Rn)、直接地址、和间接RAM的操作。以下是不同类型的DEC指令及其说明:DEC A: 累加器减一,指令长度1字节,周期1个。DEC Rn: 寄存器减一,同样1字节,周期1个。DEC direct: 直接地址减一,需要2字节指令,周期2个。DEC @Ri...

有没有aes的教程,加密解密的

pdf AES算法的识别、跟巧及Crackme实例分析 1 AES算法的判断识别 AES中有自S盒与逆S盒,可以将此作为判别标志,比如:S盒开头为:637C777BF26B6FC53001672BFEDB76CA82C97DFA5947F0...解密过程使用的盒开头为:52096AD53036A538BF40A39E81F3D7FB7CE339829B2FFF87 ...

汇编语言现在应用有哪些

软件破解,加密解密,代码速度优化,底层开发(例如DSP,BIOS,EC,嵌入式开发)等。汇编的优势:代码占用空间小,速度快,代码可硬件定位(上电开机代码都必须用汇编写),对于特定CPU优化好,可以直接使用CPU特性(直接操作IO,memory,MSR寄存器等)。

如何评价《加密与解密》

建议先放一边,等看完王爽那本书之后再决定是否学习这本。此外,你要学汇编解密的话,个人推荐看下《天书夜读:从汇编语言到Windows内核编程》这本书。个人建议的学习顺序是:王爽的《汇编语言》→《天书夜读》→《加密与解密》(与罗云彬那本书同时学习)。

汇编强大吗?

相当强大,运行效率非常高 就拿我熟悉的嵌入式linux 里面的bootloader 开始阶段就是靠汇编来引导起来 单片机的程序很多也是用汇编来写的哦 在高级语言编程里面也会经常看到内嵌汇编的语句 所以汇编很好 很强大 楼主就不好意思给点分以示鼓励嘛,呵呵 开玩笑而已哦 good luck ...

用汇编语言编写的程序需经过 汇编语言是一种什么程序设计语言 汇编语言计算器简单编程 汇编语言写程序 汇编语言简单课程设计大全 简易报警器汇编语言 汇编语言简易一位计算器设计 单片机简易计算器汇编语言 汇编语言电子琴程序设计
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我要买车,本人男,30出头,预购三厢车,价格11-14之间,高人推荐一下? 瘦肚子瘦最快方法 怎么瘦肚子 新手买车咨询,男生,身高185cm,10万元的预算,包括各种税险等,想购置三厢... 对方把朋友圈设置了部分人可见,但我见不到,是不是不把我当成好朋友了... 想买车了,10万左右的三厢手动挡,POLO劲取.奔腾B50.新宝来.哪个好呢... 2024年阴历8月哪天适合提车 外甥结婚第一年还给压岁钱,第二年不给了好吗 压岁钱可以第二年比前一年发的少吗?比如第一年给三千,后来给一千或者五 ... 2023年农历正月属羊人最吉利的提车日子本月哪天宜买车上牌? 结婚黄道吉日2023年8月适合属羊人办喜事的日子查询? 批处理监控新增文件时提取文件名到文本? 编制一个汇编语言程序将一个文本文件的内容显示在屏幕上 JAVA编写好的文本编辑器代码怎么运行啊 打开网页时 文本关键字变色 如何用java编写一个简单的文本编辑器? 如何用Java编写文本编辑器? Java 文本框的建立 易语言双组合框互选 用JC编程怎样才能生成扩展名为JAR的可执行文件呀 请问doc.jc是什么文本格式,怎样才可以打开啊? JC! 文件是什么文件格式? 我梦见我的大脚趾甲分两次掉了,我想知道解梦 做梦梦见大拇脚指甲掉了, 梦见大脚趾盖掉了出了好多血这梦好吗 有什么电视剧类似唐砖? 电视剧唐砖云烨背诗给大臣们是哪集? 想在线看唐砖下之灵域双生哪位大神有,求免费分享 求唐砖精校全集下载,跪谢 剥了皮的柚子但是没完全剥开 只是把外面厚的一层去了 剩个白色的里面的... 知道一个人QQ号的情况下怎么加对方,对方不是显示精确查找 造梦西游3所有的ce文本之类的都要。重赏!!! 关于数据库的SQL语言~!求大神来帮助~~!!! 如何删除写入文本中的回车换行 几个简单的VB题 求答案~ java语言编的记事本谁能为我加上注释呀! 请高手帮忙设计一个C语言程序 非常感谢 急!!! 医生从初级职称到高级职称是哪些? 医生职称级别划分标准是怎样的 医学职称“初级师”是什么意思? 医院的医生职称怎么分级的? 医师的职称有什么? 什么是医学初级职称 读书天才平板电脑S109为什么更新不了? 读书天才s109多少钱? 执业医师是初级职称吗 读书天才S109如何重置系统 读书天才S109怎么放卡? 读书郎s109哪一年? 读书郎优易星学习机s109多少钱? 读书郎至尊宝s109多少钱?