微机原理课程设计加密解密算法
- 格式:doc
- 大小:258.50 KB
- 文档页数:16
加密解密程序设计加密解密程序设计通常用于保护敏感信息的传输和存储,确保只有授权的用户才能访问和理解这些信息。
本文将讨论一个基本的加密解密程序设计,其中包含了常用的加密算法和解密算法,以及一些常见的加密解密技巧和策略。
一、加密算法设计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 课程设计加密解密一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握加密解密的基本概念、原理和方法;技能目标要求学生能够运用加密解密技术解决实际问题;情感态度价值观目标要求学生增强信息安全意识,提高信息保护能力。
通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
课程目标旨在培养学生的信息素养,使他们在理解加密解密的基础上,能够运用所学知识解决实际问题,提高信息保护意识,增强信息安全防护能力。
二、教学内容本课程的教学内容主要包括加密解密的基本概念、原理和方法,以及实际应用案例。
具体包括以下几个方面:1.加密解密基本概念:对称加密、非对称加密、哈希函数等。
2.加密解密原理:加密解密算法、密钥管理、数字签名等。
3.加密解密方法:加密软件使用、网络通信安全、数据保护等。
4.实际应用案例:加密解密技术在现实生活中的应用,如电子邮件、移动支付等。
教学大纲将按照教材的章节安排,循序渐进地教学内容,确保学生能够系统地掌握加密解密知识。
三、教学方法为激发学生的学习兴趣和主动性,我们将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
1.讲授法:讲解加密解密的基本概念、原理和方法。
2.讨论法:学生讨论实际应用案例,提高学生解决问题的能力。
3.案例分析法:分析加密解密技术在现实生活中的应用,增强学生的实践能力。
4.实验法:引导学生动手实践,提高学生的实际操作能力。
四、教学资源本课程将选用合适的教学资源,包括教材、参考书、多媒体资料、实验设备等。
教学资源将支持教学内容和教学方法的实施,丰富学生的学习体验。
1.教材:选用权威、实用的教材,为学生提供系统、全面的知识体系。
2.参考书:推荐相关参考书籍,拓展学生的知识视野。
3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。
4.实验设备:配置相应的实验设备,确保学生能够顺利进行实验操作。
文件加密解密报告三大队卢上游C0220120231.1题目对文本件进行加、解密操作。
1.2要求选择相应加解密算法,编写程序,要求对指定文件进行加密解密操作,结果输出到文件。
1.3方案设计与论证1.3.1 整体设计思路1.先打开文件需要加密的文本文件;2.判断是要加密还是解密;3.输入加密密钥,进行加密(解密)操作;4.把打开的文件关闭;5.将加密(解密)后的内容写入一个新的文本文件;6.关闭文件。
1.3.2 实验方案1.对于文件建立与数据缓存方案为:把文件内容加密(解密)之后存在缓存区,保留原来文件并新建一个和名字不一样的文件,存入加密(解密)数据。
2.读文件数据方案为:利用汇编语言读文件功能调用,将文件数据以读8个字节为单位读入到指定的内存地址。
3.加密方案为:(1)对读取的数据以8个字节为单位进行移位,再与密钥进行异或操作。
(2)对读取的数据以字为单位进行移位操作,再与密钥进行异或操作。
4.解密方案为:(1)对加密后的数据以字为单位与密钥进行异或操作,再进行移位操作。
(2)对加密后的数据以字节为单位与密钥进行异或操作,再进行移位操作。
1.4结构框图等设计步骤如图1为本程序的汇编流程图,由于程序对文件的操作很多,所以编程过程中用到了很多功能调用。
图 1 汇编思路流程图2.1 实验结果图2:程序加密界面图3需要加密的文件内容图4 加密后的文件图5对加密后的文件进行解密图6解密后的内容与初始文件3.1加密和解密MOV AX,DATAMOV DS,AXMOV DX,WORD PTR [JUDGE+2] ;judge 为地址,一个字节MOV AX,WORD PTR [SECRET_KEY+2] ;获取密钥值并移到AX里 PUSH AXAND DX,00FFH ;判断加密或解密CMP DX,30HMOV CX,8888HMOV DS,CXMOV DX,0000HPOP AXmov cx,5 ;外层循环5次next:push cxMOV SI,DXMOV CX,100 ;循环次数为100次JZ encrytion ;加密过程next1:ROR BYTE PTR [SI],1 XOR BYTE PTR [SI],ALINC SIPUSH AXlahf ;置zf标志为0and ah,0bfhsahfPOP AXLOOP next1MOV SI,0000HMOV CX,100next2: ; MOV BX,[SI]; MOV BX,WORD PTR [SI]ROR [SI],1XOR [SI],AX;MOV AX,WORD PTR [SI];MOV BX,[SI]INC SIINC SIPUSH AXlahf ;置zf标志为0and ah,0bfhsahfPOP AXLOOP next2JMP Pencrytion:next3:XOR [SI],AXROL [SI],1INC SIINC SIPUSH AXlahf ;置zf标志为1 OR ah,40hsahfPOP AXLOOP next3MOV SI,0000HMOV CX,100next4:XOR BYTE PTR [SI],ALROL BYTE PTR [SI],1INC SIPUSH AXlahf ;置zf标志为1OR ah,40hsahfPOP AXLOOP next4P:pop cxLOOP next这是一个加密与解密集成在一起的代码段,首先获取需要加密的数据的地址,再获取密钥的地址,在此加、解密结构中,采用双重循环:(1)里层循环:加密结构分为两个循环,第一个为逐个对每个字节进行移位和与密钥异或加密,第二个为逐个对每个字进行移位和与密钥异或加密;解密结构分为两个循环,第一个为逐个对每个字进行与密钥异或和移位解密,第二个为逐个对每个字节进行与密钥异或和移位解密;(2)外层循环:重复对每个字节和字进行加密或解密。
基于微机原理简易数码锁的设计摘要随着电子技术的发展,计算机应用技术起着越来越重要的作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
本课程设计是基于微机原理与接口技术的简单应用。
运用所学的微机原理和接口技术知识完成简易数码锁。
本课程设计以TDN 86/88微机系统教学实验箱为基础,以Intel 8255A芯片作为扩展接口,连接密码输入电路、显示电路、密码确认电路等,作为系统的硬件部分;以西安唐都科教仪器公司出版的《微机原理及应用技术试验系统Wmd86》软件4.0版为平台,以汇编语言为基础编程,作为系统的软件部分,实现了密码输入判断、显示机构操作、修改密码的功能设计。
本课程设计的主要目的是提高学生的实践能力,包括提高汇编等语言的编程能力及对接口等硬件的理解分析能力和设计接口电路的能力,从而学以致用。
只有通过实际编程和微机及接口的硬件实践,才能真正掌握软硬件设计的方法,从中得到收益和提高。
前言…………………………………………………………………………………………·第一章数码锁的设计要求及方案 (1)1.1 初始条件 (1)1.2 设计要求 (1)1.3 设计方案 (1)第二章数码锁的硬件设计 (1)2.1 硬件设计概述 (1)2.2 硬件框图 (1)2.3 硬件工作流程 (2)第三章数码锁的软件设计 (2)3.1 主程序流程图设计 (2)3.2 验证密码程序设计 (3)3.3 重设密码程序设计 (4)第四章数码锁的安装与调试 (4)4.1 硬件调试 (4)4.2 软件调试 (4)4.3 系统整体调试 (5)第五章设计体会与小结 (6)附录 (7)参考文献 (9)电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。
只有通过实际的操作才能将理论知识运用到实践中来,才能真正的掌握所学知识。
微机原理课程设计加密解密算法加密解密程序设计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,dx mov 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之间的字符作为第⼆部分,然后分别进⾏加密,两种加密⽅法完全不同。
微机原理课程设计课程实验报告实验名称矩阵式键盘数字密码锁设计一、实验目的1. 掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。
2. 初步掌握键盘扫描,密码修改和计时报警程序的编写方法。
3. 掌握通过矩阵式键盘扫描实现密码锁功能的设计思路和实现方法。
二、实验所用仪器(或实验环境)Win7计算机微机一台(Pentium 4)ISA–PCI 转接卡星研集成环境软件8255芯片12864J液晶显示器矩阵键盘三、实验基本原理及步骤(或方案设计及理论计算)1.课程设计的内容:根据设定好的密码,采用4x4矩阵键盘实现密码的输入功能。
当密码输入正确之后,锁就打开(绿灯亮),10秒之后,锁自动关闭(红灯亮);如果连续输入三次密码不正确,就锁定按键5秒钟,同时发出报警(黄灯闪),5秒后,解除按键锁定,恢复密码输入。
2.基本功能要求1)具有开锁、修改用户密码等基本的密码锁功能。
2)对于超过3次密码,密码错误,锁定键盘5秒,系统报警。
5秒后解除锁定。
4)通过LCD字符液晶和LED指示灯(红,绿,黄)实时显示相关信息。
5)用户密码为6位数字,显示采用“*”号表示。
6)密码锁键盘设计合理,功能完善,方便用户使用。
3.流程设计:4.具体实现:针对上机设备上的4×4矩阵键盘,我们分别设计功能。
密码锁用户初始密码为123456,管理员初始密码为12345678。
系统启动后,密码锁处于关闭状态,点击open按键选择开启密码锁功能,系统提示输入密码,若输入正确,则系统发出连续的四次蜂鸣并打开锁(绿灯亮10s),系统等待10 秒,然后重新关闭密码锁。
若密码错误则提示重新输入密码,若使用del按键,则所有密码清空,重新输入,若输入三次密码错误,则系统提示警告词同时发出长蜂鸣警报(黄灯闪),锁定键盘5 秒,然后重新进入初始状态。
若输入Modify功能,系统提示输入旧密码,输入旧密码+“#”键后,如果正确,系统提示输入新密码,输入新密码+“#”后,新密码起效,重新进入初始状态;如果旧密码错,不能修改密码,密码锁直接进入初始状态。
二○一六~二○一七学年第一学期国际学院电子信息工程系课程设计计划书班级:国际电信1302课程名称:微机原理及应用课程设计学时学分: 3 周 3 学分指导教师:****名:***学号:************二○一六年九月二十五日一、课程设计目的:综合运用本课程知识,利用集成电路设计等实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。
1、掌握汇编语言,会利用汇编语言编写一定功能的程序;2、熟悉DOS环境以及在DOS下会调试编写好的汇编程序;3、熟悉常用的DOS功能;4、小组合作完成设计题目。
二、课程设计内容要求:密码校验程序设计内容要求:1、菜单内容包括:①输入密码(字符串);②密码校验;③退出.2、输入字符串选择该项后,可以输入一个字符串.该字符串作为密码校验中的已知密码.3、密码校验输入字符串,若所输入的字符串与密码不一致则提示:Password error!,并重新提示输入密码,当错误输入三次时退出软件返回 DOS.若所输入的字符串与密码一致则提示: Password correct!,并返回主菜单.4、在主菜单中选择退出项,则结束程序返回 DOS.使用的DOS功能:1) 显示字符串MOV AH,09HINT 21H ;入口参数DS:DX=缓冲区2) 键盘输入一个字符MOV AH,01HINT 21H ;AL=输入的字符3)终止当前程序并返回调用程序MOV AH,4CHINT 21H ;AL=退出码4)输入字符串MOV AH,0AHINT 21H ;入口参数DS:DX=缓冲区2、使用的BIOS功能:1)设置光标位置,出口参数DH=当前字符行号、DL=当前字符列号、CH=光标起始栅线:MOV AX,03H;INT 10H2) MOV AL,0AH;在光标位置显示字符INT 10H3) MOV AH,0;从键盘读字符INT 16H三、课程设计原理及代码程序流程图AL=1程序代码DA TA SEGMENTMENU DB 5 DUP(0AH) ;预设5个字节单位,初始值均为0AH DB 32 DUP(' '),'MAIN MENU',0DH,0AHDB 25 DUP(' '),201,22 DUP(205),187,0DH,0AHDB 25 DUP(' '),186,' 1.SET THE PASSWORD',3 DUP (20H),186,0DH,0AHDB 25 DUP(' '),186,' 2.CHECK THE PASSWORD',1 DUP (20H),186,0DH,0AHDB 25 DUP(' '),186,' 3.RETURN TO DOS ... ',20H,186,0DH,0AHDB 25 DUP(' '),200,22 DUP(205),188,0DH,0AHDB 29 DUP(' '),'CHOICE(1,2,3):$'MESG DB 0DH,0AH,0DH,0AH,9,'PRESS ANY KEY TO EXIT ...$'PASS DB 0DH,0AH,9,'ENTER YOUR PASSWORD: $'YES DB 0DH,0AH,9,'PASSWORD CORRECT!$'NO DB 0DH,0AH,9,'PASSWORD ERROR!$'TIPS DB 0DH,0AH,9,'INPUT A STRING: $'MSG1 DB 255,0MSG2 DB 255,0DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXCLD ;进位标志置0AGAIN: MOV AX,3INT 10H ;读光标位置LEA DX,MENUMOV AH,09HINT 21H ;输出字符串INPUT: MOV AH,1INT 21H ;从键盘读字符,AL=字符码,AH=扫描码CMP AL,'1'JNZ CP2CALL SUB01 ;程序跳转JMP AGAINCP2: CMP AL,'2'JNZ CP3CALL SUB02 ;字符串左右移动JC EXITJMP AGAIN ;返回到主菜单CP3: CMP AL,'3' ;返回DOSJNZ INPUTEXIT: LEA DX,MESGMOV AH,9INT 21H ;输出字符串MOV AH,1INT 21H ;键盘输入单字符MOV AH,4CHINT 21HSUB01: MOV AX,3INT 10H ;读光标位置LEA DX,TIPSMOV AH,9INT 21H ;输出字符串LEA DX,MSG1MOV AH,0AHINT 21H ;输入字符串MOV AH,0AHINT 10H ;在光标位置显示字符RET ;过程返回SUB02: MOV AX,3INT 10H ;读光标位置CLC ;进位标志清0PUSH DS ;压入堆栈POP ES ;弹出堆栈MOV BP,3SSS: LEA DX,PASSMOV AH,9INT 21H ;显示字符串LEA DX,MSG2MOV AH,0AHINT 21H ;输出字符串MOV CH,0MOV CL,MSG1+1CMP CL,MSG2+1JNZ CUOWUINC CXREPZ CMPSB ;当等于/为0时重复JCXZ RIGHT ;CX为0转移CUOWU: LEA DX,NOMOV AH,9INT 21HDEC BPJNZ SSSSTC ;进位标志位置1JMP OKRIGHT: LEA DX,YESMOV AH,9INT 21HOK: MOV AH,1INT 21HRETCODE ENDSEND START运行程序1连接成功2进入程序主界面3按1开始设定密码4按2开始输入密码5密码输入错误6密码输错3次7密码输入正确四、课程设计心得体会通过本次课程设计,让我对以前学习的知识又有了回顾,不仅是让我回想起了以前学习的DOS的用法,而且又有了新的理解,学到了新的知识,这些都是老师在课堂上没有讲过的东西,本次汇编语言课程设计也让我对汇编程序有了更深刻的理解和运用,让我更加明白学习过程中需要理论知识与实践相结合,只学理论知识是很枯燥的,但当你用自己所编写的程序实现出来一个功能的时候就会觉得有很大的成就感,从而增强自己的学习积极性。
微型计算机原理及应用课程设计报告设计题目:多功能密码锁指导老师:学生:学号:专业:目录一、课设目的 (2)二、设计内容 (2)三.设计任务 (2)四.设计思路 (3)五.所用器件及各器件所实现的功能 (4)5.1 所用器件 (4)5.2 各部分器件及其功能 (4)5.2.1 CPU 8086 (4)5.2.2 可编程并行接口8255A (5)5.2.3译码器74L138 (6)5.2.4存储器27C513 (7)5.2.5 共阴极数码管 (8)5.2.6 时钟发生器8284A (8)5.2.7 石英晶振 (9)六、硬件连接图及说明(设计说明书) (10)6.1时钟发生模块电路 (10)6.2 内存模块电路 (10)6.3 拓展IO口模块电路 (11)6.4 键盘输入模块 (12)6.5 显示模块 (14)6.6系统整体电路 (16)七、各程序的详细框图及相应说明 (16)7.1 软件设计思路 (16)7.2程序介绍 (17)7.2.1主程序 (17)7.2.2开锁子程序 (17)7.2.3闭锁子程序 (17)7.2.4密码输入错误子程序 (17)7.2.5开锁成功子程序 (17)7.2.6修改密码子程序 (18)7.3流程图 (19)7.3.1主程序流程图 (19)7.3.2子程序流程图 (20)7.3.3修改密码子程序 (21)八、程序清单及必要注释 (21)九、课设结果及分析及设计难点 (25)9.1课设结果及分析 (25)9.2设计难点 (25)十.收获与体会 (26)参考文献 (26)一、课设目的1.认真回顾及运用《微型计算机原理》的内容,深入了解8086,8255A和存储器等部分芯片的功能,并学会应用。
2.学会应用学过的汇编语言知识编写一个实用并且比较深入的程序。
3.能够用相应的芯片按照程序连接成一个多功能的可实现系统。
4.提高实验技术、操作能力,提高分析问题、处理问题、解决问题的能力;掌握电路的方案选择和综合设计方法与使用;5.在此综合设计中,通过团队协作,进一步深入了解微机原理技术,提高软硬件的应用应用能力。
摘要计算机程序设计语言是人机交流的重要工具,在众多的程序设计语言中,汇编语言是一种强有力的语言,它能透彻的反映,巧妙而充分地运用计算机硬件的功能及特点,便于编程人员根据自己的需要灵活地编制高级语言能实现的无法实现的各种程序,随心所欲的控制计算机的运行。
汇编语言是计算机能提供的最快而又最有效的语言,也是能够利用计算机所有硬件特性的唯一语言。
所以,掌握好汇编语言对于我们很重要,通过本次程序设计提高我们对汇编语言的运用能力。
今天在计算机被广泛应用的信息时代,信息本身就是财富。
大量的信息用数据的形式存放在计算机系统里。
信息的传输则是通过公共信道。
这些计算机系统和信道是不设防的,很脆弱的,很容易受到攻击和破坏,因而我们需要一种措施来保护我们的数据,防止被一些用心不良的人盗取或破坏。
因此,我们需要一种强有力的安全措施来保护我们的机密数据不被盗取或破坏。
数据的加密和解密从宏观上讲是很简单,很容易理解的。
加密和解密的一些方法也是很直接的,很容易掌握,可以很方便的对机密数据进行加密和解密。
本程序的设计利用了汇编语言来实现数据的加密和解密。
对数据进行加密会使数据的存储更安全。
解密后的数据我们还可以重新利用。
数据加密和解密功能的实现是利用对数据的ASCII码进行加减运算,使它改写为另一组数据,隐藏了原数据,使他人不能看到,从而保证了原数据的安全。
程序运行中每一项操作都有提示,根据提示可选择是否继续向下运行,若选择“N”,数据将被重新输入。
而且有良好的运行界面,设计人性化。
程序运行结束后可选择退出,程序则会自动关闭窗口,不退出则会继续运行。
在加密和解密的运行中用到了INT 21H指令。
01H号功能为等待等待从标准设备输入一个字符,将该字符的ASCII码送给AL,并在标准输出设备上显示该字符。
02H号功能将DL 中的一个字符显示在标准输出设备上。
09H号功能为在标准输出设备上显示某个字符串。
0AH 号功能为输入字符串。
并且字符串以“$”为结尾。
课程设计题目加密解密程序设计学院自动化学院专业自动化专业班级自动化1005班姓名王建华指导教师向馗副教授2013 年 1 月10 日课程设计任务书学生姓名:王建华专业班级:自动化1005班指导教师:向馗副教授工作单位:自动化学院题目: 加密解密程序设计初始条件:掌握8086汇编语言程序设计方法,设计不同的加密算法并完成对数据的加密和解密工作。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1 . 程序运行后,首先显示…Please Input Data:‟,并响铃一声,然后从键盘接受以字母开始的101个字节型数据,若首字母为…E‟,则将后续的100个数据进行加密后,显示在屏幕上;若首字母为…R‟,则将后续的100个数据解密,并显示在屏幕上。
2 . 撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:2012年12月30 日-----12月31 日查阅资料及方案设计2013年01月01 日-----01月05 日编程2013年01月06日-----06月08 日调试程序2013年01月09 日-----01月10 日撰写课程设计报告指导教师签名:2013 年01 月11 日系主任(或责任教师)签名:年月日摘要 (1)1设计任务及要求 (2)1.1程序设计任务 (2)1.2程序设计要求及目的 (2)1.3需求分析 (2)2汇编语言之加密解密技术 (3)2.1汇编语言简介 (3)2.2加密解密技术简介 (3)2.3加密的目的 (4)3方案设计 (5)3.1加密方式 (5)3.2方案比较 (5)3.3设计思路 (5)4设计功能模块概述 (6)4.1程序所需模块 (6)4.2程序运行界面 (6)4.3响铃程序 (7)4.4功能选择程序 (7)4.5数据循环输入子程序 (8)4.6加密过程程序 (9)4.7解密过程程序 (10)4.8退出程序 (11)5总体程序及运行结果 (13)5.1总体程序流程图 (13)5.2程序调试 (13)5.3程序运行结果 (14)6课程设计收获及心得体会 (17)参考文献 (18)附录 (19)计算机是通过执行指令序列来工作的,每种计算机都有一组指令集提供给用户使用,这组指令集称为该计算机的指令系统。
目录一、系统开发的背景 (1)二、系统分析与设计 (1)(一)系统功能要求 (1)(二)系统模块结构设计 (2)三、系统的设计与实现 (2)(一)图形用户界面模块 (2)(二)加密操作模块 (3)(三)解密操作模块 (4)(四)文件保存模块 (4)(五)文件选择模块 (5)四、系统测试 (6)(一)测试加密 (6)(二)测试选择加密文件 (6)(三)测试生成加密文件 (6)(四)测试浏览加密文件 (7)(五)测试解密文件 (8)五、总结 (8)六、附件(代码、部分图表) (10)加密与解密一、系统开发的背景随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。
文件的加密主要是由加密算法实现,加密算法有多种,本程序设计对文件的加密使用的是最基础的异或加密算法。
Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。
本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。
使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。
二、系统分析与设计(一)系统功能要求可以采用图形用户界面,给定任意一个文本文件,进行加密,生成另一个文件,然后对加密后的文件还原。
1、向图形用户界面中添加组件;2、设置各个组件的布局;3、添加窗口事件;4、查找读入及写入文件,并显示;5、加密功能实现;6、解密功能实现;(二)系统模块结构设计通过对系统功能的分析,加密与解密功能如图1所示。
图1 加密与解密功能图三、系统的设计与实现(一)图形用户界面模块分析:在图形用户界面,设置两个面板,并分别设置显示其组件的布局。
设置两个菜单项,分别为“打开”和“保存”;设置两个按钮,分别为“加密”和“解密”;创建一个文本区,用一个标签注明“文件浏览窗口”,这就是整个图形用户界面。
加密解密程序设计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的字符串显示功能。