《使用单片机实现即时的加密通信》由会员分享,可在线阅读,更多相关《使用单片机实现即时的加密通信(16页珍藏版)》请在金锄头文库上搜索。
1、使用单片机实现即时的加密通信作者:黄俊礼,朱大庆,张明雷单位:一系四队摘要随着单片机越来越广泛的应用,单片机的技术越来越成熟。本文使用C51系列的单片机来实现加密的语音通信。首先是使用模数转换把语音信号转换为 数字信号,然后用单片机对数字信号进行处理,采用汇编语言对信号进行DES加密,最后用串口输出;接收方收到串行数据后,解密输出,然后进行数模转 换,经过放大后还原成语音信号。AbstracThe tech no logy of MCU system is much more mature today .In this project, I use MSC-51 sin glechip to
2、desig n en crypted com muni catio n system which is based on voice in time. The schematic of project includes four parts: A/D convertion,D/A convertion,encrypted by software,tran sported in serial port. The arithmetic of en crypti on is DES(Data En crypti on Sta ndard) which is writte n by assemble
3、Ian guage.关键词:DES加密;即时通信;串行通信.硬件组成部分2,工作原理(1) A/D转换部分(语)音频信号通过电位器的调节,传至模/数转换芯片ADC0809勺第一路 输入口,编码地址ABC为000表明选择IN0作为输入,其他7路输入均接地以 防止干扰。由单片机 AT89S52的ALE为ADC0809提供时钟信号,并由 WRM ADC0809勺模数转换进行控制,转换后的 8位数据传至AT89S52的 P0 口。(2) 单片机部分采用12M的时钟信号,图中的开关为复位开关当接收到ADC080的信号后, 存在寄存器中,当采样达到64bit位时,对其进行DES加密,加密后的数据由串 口输
4、出。(具体的DES见后面的软件设计部分)。(3) D/A转换部分P1端口的数据传至DAC08032勺输入口,由DAC0832勺接法可知这里是即 时地把数字信号转换为模拟信号。模拟信号通过双运放4558放大后驱动扬声(4) 串口通信电平转换电路为了把单片机的TTL电平转换为传输的 RS232C电平,这里采用了一片 MAX232电平转换后采用串口传输。使用此单元电路的目的是增加通信距离。二软件组成部分DES算法是一种通用数据加密标准,用于加密关键而非保密的信息。通过 汇编语言编写DES加脱密过程下载到单片机中实现一些简单信息的模数转换后 加脱密,既灵活多变,又方便经济。DES明文分组为64bit密
5、钥分组为64bit。将64bit明文经IP置换后分为两组, 每组32bit.每次加密一组轮换加密,对一组进行E盒,P盒运算后与另外32bit 异或即可,脱密是加密的逆过程。通过分析DESto密过程实现IP,IP逆,E盒与P盒较为容易,难点在于S盒变 换,另外密钥的生成可以通过对方约定同一固定密钥后,固化在单片机程序存 储器。下图为DES的加密过程64比特明文X初始置换L0R0=IP ( X)输出64比特密文一、在单片机中内部 RAM的地址为20H2FH的一般可按们寻址, 位地址00H7FH128bit位具体实现的算法及了程序编写思路过程如下,另附原代码IP置换即将明文的64bit分组按下表排列
6、。12345678910111213141516仃181920212223242526272829303132昌IP333435363738394041424344454647484950515253545556575859606162636458504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157IP:入口寄存器:(MSB ) 27 26 25 24 23 22 21 20 (LSB ),出口寄存器:(MSB )
7、 2F 2E 2D 2C 2B 2A 29 28 ( LSB )MOV C,06H;MOV 7FH,C;MOV C,0EH;MOV 7EH,C;重复MOV C,31H;MOV 41H,C;MOV C,39H;MOV 40H,C;二、经IP置换后明文从第一位至第 64位依次存放在寄存器 2F, 2E, 2D , 2C, 2B , 2A ,29, 28中,即位地址 7FH40H中,可对地址中数据按位变换传送到地址00H2FH中E盒扩展映射。1234321234556784567899101112891011121313141516二 E1213141516仃17181920161718192021
8、21222324202122232425252627282425262728292930313228293031321E:MOVC,40HMOVOOH,CMOVC,5FHMOV01H,C重复MOVC,40HMOV2EH,CMOVC ,5FHMOV2FH,C三、O异或子程序(32位)入口寄存器:27 26 25 24 3F 3E 3D 3C ,出口寄存器:2B 2A 29 28XORLF2 :MOVA,3FHXRLA,27HMOV2BH,AMOVA,3EHXRLA,26HMOV2AH,AMOVA,3DHXRLA,25HMOV29H,AXRLA,24HMOVA,3CHMOV28H,ARET、48位
9、的异或3BH,3AH ;28H2DH入口寄存器 20H , 21H , 22H, 23H , 24H , 25H , 3FH , 3EH , 3DH , 3CH , 出口寄存器 28H, 29H , 2AH , 2BH , 2CH , 2DH ;即将寄存器20H25H与寄存器3FH3AH中的内容进行异或,结果保存在于 寄存器中。X0RLF1 :MOV A,3FH ;XRL A,20H ;MOV 28H , A ;MOVA,3EH;XRLA,21H ;MOV29H,A ;MOVA,3DH;XRLA,22H ;MOV2AH,A ;MOVA, 3CH;XRLA,23H ;MOV2BH,A;MOVA,
10、3BH ;XRLA,24H ;MOV2CH,A ;MOVA,3AH ;XRLA,25H;MOV2DH, A;四、S盒子程序前面已经提过实现 s盒是本算法最困难的地方。在此我们通过一定的设计和改造把s盒运算变成可以通过简单位运算实现的过程。首先,做一些准备工作:将8个s盒分别存入程序存储器中,标号分别为Tab1,Tab2Tab&因为s盒中数表示成16进制都是4位,在此我们做一些扩展和改变,将奇数盒每个数后加0例如4变成40,偶数盒每个数前加0,例如4变成04。这样以增大存储 空间的办法换取操作上的方便。从功能上看s盒主要实现经过 E置换和与密钥k异或过48比特数到32比特数的变换,理 论上讲就是
11、混乱和部分扩散,我们可以进一步思考全部 48比特中每6比特代表一个TAB表 中的一个偏移地址,通过两个地址中取出的数得到一 8比特数,共有8个6比特数即可得4 个8比特数.实现了从6比特数到4比特数的转换.6比特数的生成地址表如下:0代表数字0123456001623457891011120071289101113141516171800131814151617192021222324 -00192420212223252627282930002530262728293132333435360031363233343537383940414200374238394041434445464748
12、00434844454647该表的程序实现类似于 IP置换;入口地址:40H6FH出口地址:00H3FHMOV 00H,#0HMOV 01H,#0HMOV C,40HMOV 02H,CMOV C, 41HMOV 03H,CMOV C , 6FHMOV 3FH , C通过以下程序可以将上程序中得到的TAB地址变成要求的数。入口地址:00H3FH出口地址:40H7FHTRANVERSE :CLR AMOV A,R5MOV DPTR ,R4MOVC A A+ DPTR调用该子程序前将 R5填入相应的00H3FH中的值,将 R4填入相应TAB18中的值。调 用结束后,将 A寄存器的值写入相应 40H7FH的地址中,最后将第一次 A中的值与第二 次A中的值异或即得一个 8比特数共得4次即可。例如第一次查TAB1得“40”实际为“4”, 第二次查TAB2得“04”实际为“ 4”,两次异或以后得“ 01000100”与实际查表相同。即 最终实现了最终了 S盒的转换。五、P盒置换是对8个S盒的输出进行变换,可以扩散单个S盒的效果。变换如图所示1234156192056782811271691011121 014222513141516= P4173091718192017