微机原理课程设计加密解密算法

合集下载

加密解密程序设计

加密解密程序设计

加密解密程序设计加密解密程序设计通常用于保护敏感信息的传输和存储,确保只有授权的用户才能访问和理解这些信息。

本文将讨论一个基本的加密解密程序设计,其中包含了常用的加密算法和解密算法,以及一些常见的加密解密技巧和策略。

一、加密算法设计1. 替换加密算法(Substitution Cipher):将原始消息中的字符替换为其他字符,通常使用一个固定的字母表和一个加密密钥。

例如,可以通过移位加密算法将字母A替换为字母D,将字母B替换为字母E,以此类推。

解密时,将密文中的字符替换回原始字符即可。

2. 移位加密算法(Caesar Cipher):也称为凯撒密码,是一种简单的替换密码。

将原始消息中的每个字母按照固定的位移量向后移动,例如,位移量为3时,字母A将被替换为字母D,字母B将被替换为字母E,以此类推。

解密时,将密文中的字母按照相同的位移量向前移动即可恢复原始消息。

3. 对称加密算法(Symmetric Cryptography):使用同一个密钥进行加密和解密,常用的对称加密算法包括DES、AES和RC4等。

加密时,将原始消息和密钥作为输入,通过特定的算法生成密文。

解密时,将密文和相同的密钥作为输入,通过逆算法恢复原始消息。

4. 非对称加密算法(Asymmetric Cryptography):使用两个不同的密钥进行加密和解密,分别为公钥和私钥。

常用的非对称加密算法包括RSA、DSA和ECC等。

加密时,将原始消息和公钥作为输入,通过特定的算法生成密文。

解密时,将密文和私钥作为输入,通过逆算法恢复原始消息。

5. 哈希函数(Hash Function):将任意长度的输入数据映射到固定长度的输出数据。

常用的哈希函数有MD5和SHA1等。

哈希函数通常用于生成消息的摘要,以验证消息的完整性和防止数据篡改。

二、加密解密程序设计示例以下是一个基本的加密解密程序设计示例,使用移位加密算法和对称加密算法进行加密和解密。

1.移位加密算法:```pythondef shift_cipher_encrypt(message, shift):encrypted_message = ""for character in message:if character.isalpha(:encrypted_character = chr((ord(character) - ord('A') + shift) % 26 + ord('A'))else:encrypted_character = characterencrypted_message += encrypted_characterreturn encrypted_messagedef shift_cipher_decrypt(encrypted_message, shift):decrypted_message = ""for character in encrypted_message:if character.isalpha(:decrypted_character = chr((ord(character) - ord('A') - shift) % 26 + ord('A'))else:decrypted_character = characterdecrypted_message += decrypted_characterreturn decrypted_message```2. 对称加密算法(使用Python的PyCrypto库进行AES加密):```pythonfrom Crypto.Cipher import AESdef symmetric_encrypt(message, key):cipher = AES.new(key, AES.MODE_ECB)encrypted_message = cipher.encrypt(message)return encrypted_messagedef symmetric_decrypt(encrypted_message, key):cipher = AES.new(key, AES.MODE_ECB)decrypted_message = cipher.decrypt(encrypted_message)return decrypted_message```三、加密解密技巧和策略1.密钥管理:确保只有授权的用户才能获得密钥。

微机原理课程设计++多功能密码锁

微机原理课程设计++多功能密码锁

微机原理课程设计++多功能密码锁第一篇:微机原理课程设计++多功能密码锁微机原理课程设计报告学院:专业:班级:姓名:指导老师:设计任务:多功能密码锁目录一、设计目标二、设计要求三、整体功能描述四、硬件设计功能模块 1.键盘 2.中断控制 3.计时 4.按键响应 5.报警 6.储存器及片选 7.整机电路五、程序流程图六、程序清单七、设计总结一、设计目标1.密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同显示O字样。

2.当输入密码错误时,发出错误警告声音,同时显示C字样。

3.当六次误码输入的条件下,产生报警电平报警。

4.还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。

二、设计要求1、选用8088和适当的存储器及接口芯片完成相应的功能。

2、用LED显示器显示电子锁的当前状态。

3、画出详细的硬件连接图。

4、给出程序设计思路、画出软件流程图。

5、给出地址分配表。

6、给出所有程序清单并加上必要注释。

7、完成设计说明书(列出参考文献,所用器件型号)。

三、整体功能描述本设计为多功能密码锁,使用存储器保存密码防止断电后密码丢失。

工作时按下按键蜂鸣器会发出声音提示按键有效并在数码管有“--”闪烁字样,若相隔1分钟无按键按下,则清零。

在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示O字样。

开锁后可按下“复位/修改密码键”实现修改密码功能的转入,之后先输入密码再输入同样的密码确认才可成功修改,修改成功后蜂鸣器会发出三声,数码管“O”闪烁三次提示修改密码成功。

当输入密码错误时,发出错误警告声音,同时显示FF字样,当输入密码错误次数累积够6次后,蜂鸣器会产生90秒的报警声响进行报警。

四、硬件设计功能模块本设计使用了8088、8259A、8255、8253、A28F512、74LS138、74LS148、地址锁存器、数码管以及74系列逻辑门、蜂鸣器、开关等芯片与元器件,实现了键盘输入、中断控制、计时、按键响应、开锁及报警等功能模块。

微机课程设计 密码锁

微机课程设计 密码锁

一、设计目的:本课程设计旨在使学生在学习《微机原理与接口技术》这门课程之后,能够掌握Intel8086/8088微型计算机系统的组成原理,熟练运用8086宏汇编语言进行程序设计,熟悉各种I/O接口的配套使用技术,掌握用Intel8086/8088CPU进行一些基本的微型计算机系统的软硬件设计方法。

通过对具体应用的课程设计使学生对所学知识有进一步的加深和了解,培养和提高学生的动手能力和实际应用能力。

二、设计内容:随着电子技术的发展,计算机应用技术起着越来越重要的作用。

多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。

本课程设计是基于微机原理与接口技术的简单应用。

运用所学的微机原理和接口技术知识完成简易数码锁。

数码锁主要由8086系统及Intel 8255A可编程并行接口芯片和密码输入电路、显示电路、密码确认电路这几部分构成。

根据设计的功能和要求,编写相应的汇编程序,以支持整个系统的运行,实现数码锁的功能。

汇编程序只要分为输入密码、判断密码、修改密码这几部分流程来编写,以满足整个数码锁的设计要求并完成相应的功能.三、设计任务和要求:1:数码锁系统主要有8086系统和8255A可编程并行接口芯片及密码输入电路、显示电路、密码确认电路组成。

2:用K0~K7开关作为密码控制输入键3:K2~K7为6位密码设置及输入开关4:K0、K1分别做控制键5:当K1开关闭合时,通过开关K2~K7重设并保存新密码6:当K1开关断开时,查看开关K0的状态,若K0闭合,将K2~K7输入的密码与原密比较,若相同则灯亮,否则,灯灭;若K0断开,则重复输入密码进行比较。

四、可选器材:⑴PC机;⑵EL-1型微机原理教学实验箱系统;⑶信号发生器;五、参考资料:[1]《EL-1型微机教学系统实验指导书》[2] 赵彦强.《微机原理与接口技术》(第二版).合肥:合肥工业大学出版社,2010.[3]周荷琴,吴秀清.《微型计算机原理与接口技术》(第三版).合肥:中国科学技术大学出版社,2004.[4] 戴梅萼,史嘉权.微型计算机技术及应用.北京:清华大学出版社,1996[5] 李伯成.微型计算机原理及接口技术.北京:清华大学出版社,2005.[6] 洪永强.微机原理与接口技术.北京:科学出版社,2004.硬件设计方案:一、设计概述原理图硬件工作流程首先对可编程器件进行初始化操作,即对8255写入方式控制字,配置I/O 端口的输入输出方向。

微机课程设计(密码锁)

微机课程设计(密码锁)

本科课程设计(论文)题目:多功能密码锁课程名称微机原理课程设计学院自动化科学与工程学院班级 2012级3班学生姓名罗艺锋学生学号 201230641470提交日期 2015 年 1分数目录一、目的 (3)二、内容 (3)三、设计任务 (3)四、方案选择及原理 (3)五、所用器件 (3)主要器件简介 (4)六、原理图 (6)1、8086和存储器连接 (6)2、CPU与8255A连接 (6)8255A的A口与键盘连接 (7)4、8255A的B、C口 (7)5、完整电路图 (8)七、软件设计思路 (8)八、流程图 (9)1、主程序 (10)2、子程序 (11)九、程序代码 (11)十、设计中的难点 (13)十一、收获及体会 (14)多功能密码锁一、目的1、了解和掌握8086,8255,等接口芯片以及LED显示器的原理和功能;2、能用这些接口芯片构建一个简单的系统控制对象,3、掌握接口电路的综合设计与使用;4、通过自己动手,进一步了解计算机得工作原理,接口技术,提高计算机硬件,软件综合应用能力,即对微机原理,接口技术,汇编语言程序设计进行综合训练。

二、内容密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同显示00字样。

当输入密码错误时,发出错误警告声音,同时显示FF字样。

当六次误码输入的条件下,产生报警电平报警。

还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。

三、设计任务1、选用8086和适当的存储器及接口芯片完成相应的功能。

2、用LED显示器显示电子锁的当前状态。

3、画出详细的硬件连接图。

4、给出程序设计思路、画出软件流程图。

5、给出地址分配表。

6、给出所有程序清单并加上必要注释。

7、完成设计说明书(列出参考文献,所用器件型号)。

四、方案选择及原理这次的设计要求是在密码输入正确时输出开锁电平和显示“00”,密码错误时显示“FF”和蜂鸣器发出报警声音等,我们采用8255A的B口作为显示器的输出,c口为选管和接蜂鸣器,开锁及报警电平。

微机原理课程设计_电子密码锁

微机原理课程设计_电子密码锁

一.课程设计的目的和任务1.设计目的1、了解和掌握8086,8255接口芯片以及LED灯的原理和功能。

2、能用这些接口芯片构建一个简单的系统控制对象。

3、掌握接口电路的综合设计与使用。

4、通过自己动手,进一步了解计算机得工作原理,接口技术,提高计算机硬件,软件综合应用能力,即对微机原理,接口技术,汇编语言程序设计进行综合训练。

2.设计任务1、选用8086和适当接口芯片完成相应的功能。

2、用LED灯显示电子锁的当前状态。

3、画出详细的硬件连接图。

4、给出程序设计思路、画出软件流程图。

5、给出所有程序清单并加上必要注释。

二、设计内容密码锁在开启之后需要置一个初始密码,之后输入密码并按确认键,在输入密码正确的条件下输出开锁电平,此时绿灯亮表示密码锁开启。

当输入密码错误时,红灯亮表示密码锁关闭状态。

可以继续输入密码并确认输入密码,直至密码正确则开启。

在密码输入正确之后还可以实现对密码的修改,修改密码之后按下确认修改密码键,修改成功。

三、方案选择及原理通过8255的24个接口实现密码输入,密码锁开关显示输出的功能。

应用8255的A 口的8位作为密码输入的8位,通过8个SWITCH开关控制,B口的其中两位分别接绿和红的LED灯作为输出表示密码锁的开关(绿灯亮表示密码正确开锁,红灯亮表示密码错误闭锁)。

C口的作为输入,使用其中两位分别接两个BUTTON开关,一个作为密码修改确认开关,一个作为密码输入确认开关。

四、所用器件CPU8086,地址锁存器273,译码器154,并行接口8255A,SWITCH开关,BUTTON 开关,LED灯。

主要器件简介CPU80868086是Inter系列的16位微处理器,芯片上有2.9万个晶体管,采用 HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz。

8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。

可寻址的内存空间为1MB。

并行接口8255Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

微机课设 数据加密

微机课设  数据加密

目录1.摘要 (2)2.方案选择 (2)3.软件设计说明 (3)3.1总体流程 (3)3.2模块程序流程图 (5)3.2.1 加密方式 (5)3.2.2 解密方法设计 (5)3.3源程序 (6)3.4 源程序说明 (13)3.4.1 BIOS中的功能说明 (13)3.4.2子程序说明 (15)4. 程序调试说明 (15)5 .心得 (17)6.参考文献 (19)1.摘要数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。

数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。

它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。

在本设计中要求运用汇编语言设计不同的字符串加密和解密算法。

首先从键盘输入一个字符串(对于字母要区分大小写),再进行加密操作,结果转换成新的字符输出,即显示加密结果,按回车键,输出解密结果。

2.方案选择对于题目要求有以下几种实现方法:(1)调用DOS的OAH号功能输入一串完整的字符串,即要求加密的字符串,输入后进行保存,然后调用加密子程序对字符串中各个元素加密,保存在另一个内存区中,再调用DOS的9号功能把之前加密好的并保存的密码字符串完整输出,显示在屏幕上,最后输出之前已经输入并保存的明码即可,也可以用解密函数对密码解密并输出明码。

(2)调用DOS的8号功能逐个输入明码字符,此时由于8号的功能对输入的字符不显示,故输入的明码不显示。

再即时对输入的字符明码保存并调用加密子程序对明码字符进行加密并输出显示在屏幕上,直到把明码输入完,此时加密结果也输出结束,最后把保存的明码输出,即输出一个完整的明码字符串。

在本设计中,我选择了第二种方法,这样的密码显示也很实用。

为了得到一个很实用的操作界面,便于操作者使用,在程序中调用了BIOS中的一些功能,使一些提示语更加醒目,这样更实用点。

解密与加密课程设计

解密与加密课程设计

解密与加密课程设计一、课程目标知识目标:1. 学生能理解加密与解密的基本概念,掌握常见的加密算法及其原理;2. 学生能描述加密技术在现实生活中的应用,了解信息安全的重要性;3. 学生能运用所学的加密知识,分析并解决简单的加密与解密问题。

技能目标:1. 学生能够运用所学算法,设计简单的加密与解密程序;2. 学生能够通过分析加密算法的优缺点,选择合适的加密方法保护信息安全;3. 学生能够运用逻辑思维和问题解决能力,对加密与解密问题进行探讨和研究。

情感态度价值观目标:1. 学生能够认识到信息安全的重要性,树立保护个人隐私和数据安全的意识;2. 学生能够通过学习加密与解密知识,培养逻辑思维、团队协作和探究精神;3. 学生能够关注我国在信息安全领域的发展,增强国家意识和自豪感。

课程性质:本课程为信息技术课程,旨在帮助学生了解加密与解密知识,提高信息安全意识,培养实际操作能力和逻辑思维能力。

学生特点:六年级学生具有一定的信息技术基础,对新鲜事物充满好奇心,具备一定的逻辑思维能力和动手操作能力。

教学要求:结合学生特点,采用任务驱动、分组合作等教学方法,注重理论与实践相结合,提高学生的信息素养和解决问题的能力。

通过本课程的学习,使学生能够达到上述课程目标,并在实际生活中运用所学知识。

二、教学内容1. 加密与解密基本概念- 定义加密、解密及密钥- 了解加密技术在生活中的应用2. 常见加密算法- 对称加密算法:如DES、AES- 非对称加密算法:如RSA、ECC- 混合加密算法:如SSL/TLS3. 加密算法原理及实现- 分析对称加密和非对称加密的原理- 介绍加密算法在计算机编程中的实现4. 加密与解密技术应用- 数字签名- 网络安全协议:如HTTPS- 移动通信加密5. 信息安全意识- 保护个人隐私和数据安全- 认识到信息安全的重要性6. 实践操作与案例分析- 设计简单的加密与解密程序- 分析加密算法在现实案例中的应用教学内容安排与进度:第一课时:加密与解密基本概念,介绍加密技术在生活中的应用第二课时:对称加密算法及原理,分析DES加密算法第三课时:非对称加密算法及原理,分析RSA加密算法第四课时:混合加密算法,介绍SSL/TLS在网络通信中的应用第五课时:加密与解密技术应用,实践操作与案例分析第六课时:信息安全意识培养,总结课程内容,布置课后作业本教学内容根据课程目标,结合课本知识,注重理论与实践相结合,旨在帮助学生掌握加密与解密知识,提高信息安全意识,为后续学习打下坚实基础。

c课程设计加密解密

c课程设计加密解密

c 课程设计加密解密一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握加密解密的基本概念、原理和方法;技能目标要求学生能够运用加密解密技术解决实际问题;情感态度价值观目标要求学生增强信息安全意识,提高信息保护能力。

通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。

课程目标旨在培养学生的信息素养,使他们在理解加密解密的基础上,能够运用所学知识解决实际问题,提高信息保护意识,增强信息安全防护能力。

二、教学内容本课程的教学内容主要包括加密解密的基本概念、原理和方法,以及实际应用案例。

具体包括以下几个方面:1.加密解密基本概念:对称加密、非对称加密、哈希函数等。

2.加密解密原理:加密解密算法、密钥管理、数字签名等。

3.加密解密方法:加密软件使用、网络通信安全、数据保护等。

4.实际应用案例:加密解密技术在现实生活中的应用,如电子邮件、移动支付等。

教学大纲将按照教材的章节安排,循序渐进地教学内容,确保学生能够系统地掌握加密解密知识。

三、教学方法为激发学生的学习兴趣和主动性,我们将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

1.讲授法:讲解加密解密的基本概念、原理和方法。

2.讨论法:学生讨论实际应用案例,提高学生解决问题的能力。

3.案例分析法:分析加密解密技术在现实生活中的应用,增强学生的实践能力。

4.实验法:引导学生动手实践,提高学生的实际操作能力。

四、教学资源本课程将选用合适的教学资源,包括教材、参考书、多媒体资料、实验设备等。

教学资源将支持教学内容和教学方法的实施,丰富学生的学习体验。

1.教材:选用权威、实用的教材,为学生提供系统、全面的知识体系。

2.参考书:推荐相关参考书籍,拓展学生的知识视野。

3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。

4.实验设备:配置相应的实验设备,确保学生能够顺利进行实验操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

加密解密程序设计1设计算法概述本设计主要采用对密码符号的ASCII码进行变换和反变换来实现加密和解密。

将ASCII码从33到126(除控制字符外)的字符分成2部分:ASCII码从33到63的字符为第一部分,ASCII码在64到128之间的字符为第二部分。

每个字符加密后均变为2个字符。

第一部分通过查表法加密和解密,先建立62字节的密码表。

加密时,因为一个字符加密后变为两个字符,所以ASCII码从33到63的31个字符密码对应62个字符,即62个字节的数据,计算待加密字符ASCII码对33的偏移量,在密码表中,以这个偏移量乘以2为偏移量的字节数据和下一字节数据就是对应密码;解密时,在表中找到相同字型数据时,计算它对表首的偏移,再加33,就是解密后的字符的ASCII码。

第二部分通过判断字符ASCII码的特性来加密和解密。

先判断输入字符的ASCII码是否为3的倍数,若是则对应密码的高位字节为35 ('#'),低位字节为本身ASCII码减一;再判断输入字符的ASCII码是否为5的倍数,若是则对应密码的高位字节为37(‘%’),低位字节为本身ASCII码减3;最后判断输入字符的ASCII码是偶数还是寄数,偶数的密码高字节为38(‘&’),低字节为本身ASCII码加1,奇数的密码高字节为39(‘'’),低字节为本身ASCII码加3 。

解密的时候先判断高字节数据,若高字节数据位35、37、38、39则舍去高位字节,低位字节分别进行相应的解密,就得到原码。

2主程序设计2.1主程序的功能主程序主要是人机交互部分,提示输入信息和功能选择。

程序开始,提示用户选择相应的功能:按E、e调用加密子程序,进入加密状态,按R、r调用解密子程序,进入解密状态,按Esc退出程序,若输入错误则再次提示输入功能选择。

2.2主程序流程图主程序流程图如图1所示。

图1 主程序流程图2.3主程序汇编代码分析主程序汇编代码分析如下:main proc far ; 主程序start:mov ax,datamov ds,axmov dx,seg first_message ;提示输入信息dos-09h,ds:dx为首地址mov ds,dxmov dx,offset first_messagemov ah,09hint 21hmainloop:mov dx,seg second_messagemov ds,dxmov dx,offset second_messagemov ah,09hint 21hinputagain:mov ah,01hint 21hcmp al,1bhje over ;输入为ESC,跳转到结束cmp al,45hje jiamicallcmp al,65hje jiamicall ;输入为e,E,调用加密程序cmp al,52hje jiemicallcmp al,72hje jiemicall ;输入为r,R,调用解密程序jmp mainloopjiamicall:call jiamijmp mainloopjiemicall:call jiemijmp mainloopover:mov dx,seg message3 ;提示结束mov ds,dxmov dx,offset message3mov ah,09hint 21hmov ax,4c00h ;程序退出int 21hmain endpcode endsend main3加密程序设计3.1 加密字符筛选程序3.1.1加密字符筛选程序描述本段程序用以筛选输入字符,将ASCII码在33到63之间的字符作为第一部分,ASCII码在64到126之间的字符作为第二部分,然后分别进行加密,两种加密方法完全不同。

如果输入控制字符即ASCII码小于33或者为127的时候,程序提示输入错误,并从新读取键盘输入。

3.1.2字符筛选程序流程图图2 字符筛选程序流程图3.1.3字符筛选部分程序代码分析字符筛选部分程序代码分析如下:jiami proc nearcall input_data ;提示输入lea di,buf ;取密码存储首地址jiami_loop:mov ah,01hint 21h ;从键盘读取一个字符cmp al,1bh ;判断是否为ESCje call_xianshi_jiami ; 到显示子程序cmp al,7fhje error_loop ;判断是否为deladd al,0cmp al,33 ; 判断是否输入控制字符js error_loopadd al,0 ; 清除sf 标志位cmp al,64 ;判断字符ASCII码是否小于64js call_table_jiami ;调用查表加密jmp call_chengfa_jiami ;调用第二部分加密error_loop:mov dx,seg message_error ;输入错误mov ds,dxmov dx,offset message_errormov ah,09hint 21h ;提示信息jmp jiami_loopcall_table_jiami:call table_loopjmp jiami_loopcall_chengfa_jiami:call second_jiamijmp jiami_loopcall_xianshi_jiami:call xianshi_jiamiretjiami endp3.2查表加密程序设计3.2.1查表加密描述将待加密字符ASCII码在33到63之间的字符称为第一部分,第一部分采用查表的方法加密,每个字符对应两个字节的密码,也就是两个字符,密码表如图2所示。

进行加密的时候,只要将输入字符的ASCII码减去33,再以它作为密码表格的偏移量,就可以查到密码。

如输入字符‘% ’,其ASCII码为37 ,37-33=4 ,表格中偏移为4的密码为7626h ,即‘&v ’为密码。

在程序数据段中预先输入密码表,即建立一个31个字型数据的数组来存放密码,加密的时候,以偏移量来调用数组的元素,就是密码。

没加密一个字符,将加密后的密码存入预先定义好的数组中,显示的时候先显示低字节,在显示高字节。

表一密码表原码密码原码密码原码密码原码密码33 7e22h 41 682ah 49 5857h 57 507eh34 7c3eh 42 6638h 50 7d56h 58 4e41h35 7a23h 43 642ch 51 596fh 59 4c43h36 783ch 44 6236h 52 3679h 60 4a45h37 7626h 45 602eh 53 5877h 61 484dh38 743ah 46 5834h 54 5675h 62 4667h39 7228h 47 5630h 55 5473h 63 4440h40 7038h 48 6032h 56 5271h ——3.2.2查表加密汇编代码分析本程序段主要用到查表指令xlat,将表格的段地址放入ds,偏移地址放入dx,偏移量放入al中,查表后结果存放在al中。

对代码的分析如下:table_loop proc nearmov dx,seg table2mov ds,dxmov bx,offset table2 ;取密码表首地址sub al,33add al,almov dl,al ;暂存al(输入字符的ASCII码)xlat ;查表mov cl,al ;将密码低字节存入clmov al,dl ;再取密码高字节存入chadd al,1xlatmov ch,almov dx,seg buf ;取密码存储单元首地址mov ds,dxmov [di],cx ;将密码存入存储区得带加mov ax,0024h ;密完成后显示mov [di+2],alinc diinc direttable_loop endp在程序最后面,密码存储完后,下一单元存入0024h,24h是符号‘$ ’的ASCII码,这样可以在显示的时候钓友dos的09h号功能,直接显示字符串,很方便。

3.3第二部分加密程序设计3.3.1第二部分加密程序设计描述如果输入字符的ASCII码不在第一部分范围内,则用第二部分加密。

这一部分的加密方法主要是通过判断输入符号ASCII码的数学特性来进行加密。

加密的主要方法如表所示,如果原码是3的倍数,则密码的高字节为‘#’(35),低字节为本身的ASCII码减1;如果原码是5的倍数,则密码的高字节为‘%’(37),低字节为本身的ASCII码减3;如果原码是偶数,则密码的高字节为‘&’(38),低字节为本身的ASCII码加1;如果原码是寄数,则密码的高字节为‘’’(39),低字节为本身的ASCII码加3 。

因为程序是顺序判断执行的,所以先判表二第二部分加密方法表原码密码高字节低字节是3的倍数‘#’(35) al-1是5的倍数‘%’(37) al-3是偶数‘&’(38) al+1是寄数‘’’(39) al+3断是否为3的倍数,在判断是否为5的倍数,然后判断奇偶,这样就不会出现混淆出错的情况。

3.3.2第二部分加密程序设计流程图第二部分加密程序流程图如图所示,先判断是否为3的倍数,再判断是否为的倍数,然后判断奇偶。

5图3 加密程序流程图3.3.3第二部分加密程序设计代码分析程序代码如下,先判断al是否为3的倍数,再判断是否为5的倍数,然后判断奇偶性,顺序判断,满足则跳转调用子程序加密,保存数据。

second_jiami proc nearmov dl,al ;暂存almov ah,0mov bl,3div bl ;al除以3add ah,0 ;判断余数是否为0jz call_div3_jiami ;是0则跳转mov al,dlmov ah,0 ;清楚ah中的数mov bl,5div bl ;al除以5add ah,0 ;判断余数是否为0jz call_div5_jiami ;是0则跳转mov al,dltest al,01h ;判断al的奇偶性jz call_oushu_jiami ;偶数跳转call jishu_jiamijmp jiami_loopsj_ret:retcall_div3_jiami:call div3_jiamijmp sj_ret ;返回call_div5_jiami:call div5_jiamijmp sj_retcall_oushu_jiami:call oushu_jiamijmp sj_retsecond_jiami endp如果al是3的倍数调用的子程序div3_jiami如下,在最后两个字节中存入了数据24h,是为了在显示的时候调用dos的字符串显示功能。

相关文档
最新文档