资源描述:
《微机原理课程设计-加密解密算法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、加密解密程序设计sn1设计算法概述本设计主要采用对密码符号的ASCII码进行变换和反变换来实现加密和解密。将ASCII码从33到126(除控制字符外)的字符分成2部分:ASCII码从33到63的字符为第一部分,ASCII码在64到128之间的字符为第二部分。每个字符加密后均变为2个字符。第一部分通过查表法加密和解密,先建立62字节的密码表。加密时,因为一个字符加密后变为两个字符,所以ASCII码从33到63的31个字符密码对应62个字符,即62个字节的数据,计算待加密字符ASCII码对33的偏移量,在密码表中,以这个偏移量乘以2为偏移量的字节数据和下一字节数据就是对应密码;解密时,在表中找到相
2、同字型数据时,计算它对表首的偏移,再加33,就是解密后的字符的ASCII码。第二部分通过判断字符ASCII码的特性来加密和解密。先判断输入字符的ASCII码是否为3的倍数,若是则对应密码的高位字节为35(#),低位字节为本身ASCII码减一;再判断输入字符的ASCII码是否为5的倍数,若是则对应密码的高位字节为37(,%,),低位字节为本身ASCII码减3;最后判断输入字符的ASCII码是偶数还是寄数,偶数的密码高字节为38U&J,低字节为本身ASCII码加1,奇数的密码高字节为39(川),低字节为本身ASCII码加3。解密的时候先判断高字节数据,若高字节数据位35、37、38、39则舍去高位
3、字节,低位字节分别进行相应的解密,就得到原码。2主程序设计2.1主程序的功能主程序主要是人机交互部分,提示输入信息和功能选择。程序开始,提示用户选择相应的功能:按E、e调用加密子程序,进入加密状态,按R、r调用解密子程序,进入解密状态,按Esc退出程序,若输入错误则再次提示输入功能选择。2.2主程序流程图主程序流程图如图1所示。提亦输入信息读入一个字符Y调用加密子程*调用解密子程图1主程序流程图2.3主程序汇编代码分析主程序汇编代码分析如下:mainprocfarstart:movax?datamovds,axmovdx,segfirst_messagemovds.dxmovdx,offset
4、first_messagemovah,09hint21h;提示输入信息dos-09h,ds:dx为首地址mainloop:movdx.segsecond_messagemovds.dxmovdx,offsetsecond_messagemovah,09hint21hinputagain:movah.Olhint21hcmpal,lbhjeovercmpal,45hjejiamicallcmpal,65hjejiamicallcmpal,52hjejiemicallcmpal,72hjejiemicalljmpmainloopjiamicalkcalljiamijmpmainloopjiemic
5、alkcalljiemijmpmainloopover:movdx.segmessage3movds.dxmovdx,offsetmessage3movah,09hint21hmovax,4c00hint21h瀚入为ESC,跳转到结束;输入为e,E,调用加密程序;输入为r,R,调用解密程序;提示结束;程序退出mainendpcodeendsendmain3加密程序设计3.1加密字符筛选程序3.1.1加密字符筛选程序描述本段程序用以筛选输入字符,将ASCII码在33到63之间的字符作为第一部分,ASCII码在64到126之间的字符作为第二部分,然后分别进行加密,两种加密方法完全不同。如果输入控制
6、字符即ASCII码小于33或者为127的时候,程序提示输入错误,并从新读取键盘输入。3.1.2字符筛选程序流程图提示输入提示输入错误调用加密程序1调用加密程序23.1.3字符筛选部分程序代码分析字符筛选部分程序代码分析如下:jiamiprocnearcallinput_dataleadi,bufjiami_loop:movah,01hint2lhcmpaljbhjecall_xianshiJiamicmpal,7fhjeerror_loopaddal,0cmpal,33jserror_loopaddal,0cmpal,64jscall_tablejiamijmpcall_chengfajiam
7、ierror_loop:movdx,segmessage_errormovds.dxmovdx,offsetmessage_errormovah,09hint21hjmpjiami_loopcall_tablejiami:calltable_loopjmpjiamijoopcall_chengfajiami:callsecondjiamijmpjiamijoopcall_xianshiJiamix