登录站点

用户名

密码

单片机汇编语言实现DES加密算法

1已有 1206 次阅读  2013-04-17 10:30   标签单片机  加密 
目前在金融界及非金融界的保密通信中,越来越多地用到了DES算法。DES(Data Encryption Standard)即数据加密算法,是IBM公司于 1977年研究成功并公开发表的。随着我国三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)中被广泛应用,以此来实现关键数据的保密。如信用卡持卡人的PIN的加密传输、IC卡与POS间的双向认证、金融交易中的密码键盘等,均用到DES算法。由于密码键盘不可能使用高级语言,所以用汇编语言实现DES就非常实用。

(P1Ju2`!? g lk44606 电子园51单片机学习网PHUBy


6^8z%U~]Q446061 DES算法的简单原理

-OG!Y2DuRT6Z?8o44606 电子园51单片机学习网1~ S$Q1?9q)c0T/i4lG

 

$xEE'Lg"x44606

8[#n7DM}44606  DES是一种分组密码。假定明文m是由0和1组成的长度为64位的符号串,密钥k也是64位的0、1符号串。

$e'w X:cfHi44606

&c5s Z/ip3af44606 

7}If^+L m Krh44606

nv6oV+D@44606   设:M=m1m2m3…m64

A&{?C8K*qx'ISM JO44606 电子园51单片机学习网-K4? g3u`~

   K=k1k2k3…k64

D*CXGaM@c44606

"uqi/Pa6d?S44606    加密过程可表达如下:

.y_'yjQv8?%S*d44606 电子园51单片机学习网:|:DK7fri

    DES(m)=IP-1·T16·T15…T2·T1·IP(m)电子园51单片机学习网evX1[k]G/OO5A

电子园51单片机学习网9f)z sc4S#{ mb

    其中:IP(m)是初始置换,IP-1是逆置换,T16~T1是16次迭代。电子园51单片机学习网 w*iIDu s Q


8f cY L mb(GP44606 电子园51单片机学习网.BDZ'\$}eRYM!u:|

电子园51单片机学习网#B0MvS!IuWB5} v

    (1)初始置换IP

K}Ij+L!S,]44606

c#h.?m(bUQ44606  功能是把输入的明文m按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则如下:

0J7UDLO\.{$K&bC44606 电子园51单片机学习网SF{^8RzP}R P a

 

5W"f2x Z+_e44606

T3p;}M5a-V$N4460658,50,42,34,26,18,10,2,电子园51单片机学习网4H2U*mz^7X


^Y}C4r c%K!r E4460660,52,44,36,28,20,12,4,

m7rSpx1lz44606 电子园51单片机学习网-w!P+@ l$G%_#IPu

62,54,46,38,30,22,14,6,

t[M)z3f%c2J1f M44606 电子园51单片机学习网 C D4J,i2Y I q ?l|R:N

64,56,48,40,32,24,16,8,电子园51单片机学习网 N sUS;\aM

电子园51单片机学习网X%h@"@;o#K$J/@x

57,49,41,33,25,17,9 ,1,

x+ii5[3M]44606

B)aiG?!Z*d7n4460659,51,43,35,27,19,11,3,电子园51单片机学习网+jgUh6` UrT


_\5s1_9vEU?4460661,53,45,37,29,21,13,5,电子园51单片机学习网?d6g\yK-h"r-m1`


NA.t"F3s{3}4460663,55,47,39,31,23,15,7电子园51单片机学习网,@7b k2w#LD


?3^;Hi@KW44606 

TJpW2cog o h44606

G8w9N2C;lX44606    (2)逆置换IP-1

/sISl1S c;ig(O E44606

.bM s@G8S;[44606 电子园51单片机学习网$N,p.U%P0H!hK


t&q&EII#`+[44606  经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换。逆置换满足:电子园51单片机学习网TC@K T.@F9X&~&C)WF


\0Mj.[z \ H n'i*\44606    IP·IP-1=IP-1·IP=I电子园51单片机学习网T#ucwh9NR


H*~dRc!W*i:K3j44606    逆置换正好是初始置换的逆运算。电子园51单片机学习网@d1P&]G+y kvnp:A


0tE(d9A2_c44606 

wn4q8g{2z X1}6| Zc44606

P-U*r8}io44606    (3)T16~T1的迭代计算

G b d Q(g m?Z44606 电子园51单片机学习网"\F_#t4b

  DES的迭代算法采用模2加法。

8m%fsCF%O6OE-Y44606 电子园51单片机学习网 }([z*V1RdP

 电子园51单片机学习网yR!Kf6T']2t%[1V.f


j bdMD2s2[8}(x8X d44606  在通信网络的两端,双方约定了一致的密钥。在通信的源点用密钥对核心数据进行加密并形成密文,然后,以密文的形式在公共通信网中传输到通信网络的终点。数据到达终点后,用同样的密钥对密文数据进行解密,便再现了明文形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。电子园51单片机学习网y[8T#H2Q

电子园51单片机学习网_Lf;jelm,C

 电子园51单片机学习网"z`?m0Jv


{!mo'T _!~446062 汇编语言的实现

0Xs)q(vX ]B'b44606 电子园51单片机学习网Q&SC+f]9g;K}

 电子园51单片机学习网8J$toy(q`Lo

电子园51单片机学习网h2p8N'y;B d\

  用汇编语言实现DES算法有它的优势也有它的难点。优势是51汇编的位操作可以方便地实现置换功能。但用汇编语言实现算法的迭代运算及循环功能比较烦琐。在用51汇编实现DES的过程中,我编写了几个子程序,组合起来可实现DES算法加密。在这里写出一些思路,有需要的同行可与我联系(E-mail:zhoubin@jlu.edu.cn)。电子园51单片机学习网*Z5V2D5s#sP(C}^


/a}w$J7iU0DO'Oz44606 电子园51单片机学习网dS UDn9m@


u&vD Bx!u"l)x K D"S7M44606  8031有16个可以位寻址的寄存器,可放置128位的数据,利用它可实现DES的转置功能。将明文m放入寄存器27H~20H中,即位地址00H对应m64 ,3FH对应m1。利用标志寄存器C可实现置换与逆置换程序。在DES的16次迭代过程中,要实现公式:

b2Xm\4wPT ?Z%^44606

R\1K R*Y V44606 电子园51单片机学习网 ]s&@NO~qr9g


d7Q2fv!lrH5[k44606    Li="Ri-1";Ri=Li-1f(Ri-1,ki)电子园51单片机学习网i8[2R1R'p%e _!f m6B

电子园51单片机学习网]6M \5k;?Zev

    的运算过程,其关键在于f(Ri-1,ki)的功能。f是将32位的输入转化为32位的输出。其中含3项技术:

ia)\5D @ FR g;f44606 电子园51单片机学习网r'X0r/n*yg6Xgp{

 

{-ko.yc5Xa+FDK6D44606

5v6v9Wvfm44606  ① 将32位膨胀为48位的E功能。该项功能可用类似于置换功能的子程序编写。电子园51单片机学习网}(^:I-j4qE0K6j5u


#u%e7[.f!D2h `44606 电子园51单片机学习网BX!GR/A9N

电子园51单片机学习网 d&p&yuzr_V^G

  ② 48位子密钥的生成。为了便于51汇编生成子密钥,可以使用主机用串口下传的方式,由主机将16个子密钥传给89C52为核心的单片机,然后存入80H~FFH中。如果密钥是固定的,则可直接将子密钥固化在89C52的Flash中。电子园51单片机学习网$PAm$u i/v#f%l7p!y| L


'E0[VF)|#r}44606 电子园51单片机学习网 \dh pn$AU$b r

电子园51单片机学习网,y6M { XrY#e~

  ③ S盒的功能是将48位的输入再次缩为32位。具体实现是将S盒表存入89C52的Flash中,每次通过查表求得S输出的结果。电子园51单片机学习网7bhb wc(g]

电子园51单片机学习网^(g&Z[ Mq[&t

 电子园51单片机学习网 E&GT+q{+YBho"H

电子园51单片机学习网N"iPY,LNf F/h(O

    下面列举其中的几个子程序。

p;Z#^[{Y:K"z}44606 电子园51单片机学习网L#Oj_6z {3m*RA

 

!Q_j(r] U44606

x:p6Xa%Y8g{6v44606(1)IP置换子程序

'L:{i V+n;R)h9T44606

1y[;tbtkv&|44606 电子园51单片机学习网/o4Nk@+W MxE DO!k

电子园51单片机学习网H4nz9PR&q { C

;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)电子园51单片机学习网$b`3fn:Iw@-u j


Y us8g#}?H'Q B']44606;功能:将入口寄存器的数据按置换表换位。

ka:d;o1w-p'g ` Y8B44606 电子园51单片机学习网:m[I'],u.E'RQ7{ ~;Z

IP: MOV C,06H ;将m58送到进位标志中电子园51单片机学习网R@Y7`yNJ2xtl

电子园51单片机学习网P"DX8? iRZ8y6A

MOV 7FH,C ;将进位标志送m1中电子园51单片机学习网)Su"M2[^o0c5J

电子园51单片机学习网6q/{'mh PKF2V?

MOV C,0EH ;将m50送到进位标志中电子园51单片机学习网1K$Ek q jB/{w


;C4leAQu#xK44606MOV 7EH,C ;将进位标志送m2中

j g(t+F+j!p0F`eN44606 电子园51单片机学习网9F"?B H"u[7f,p1q

;重复,按表编写

wDxX"H~0r6n44606

&]+KU6j;t]x0B44606……电子园51单片机学习网l8xJ(J` q9QpF

电子园51单片机学习网DiKH&j;W

MOV C,31H ;将m15送到进位标志中

!m*d lm _3n44606 电子园51单片机学习网_-P[,x XP$A

MOV 41H,C ;将进位标志送m63中

I"Wv:Y+Dp5I44606

"u/lr@}44606MOV C,39H ;将m7送到进位标志中

e:cO7~#Q O44606

J``k3q44606MOV 40H,C ;将进位标志送m64中

F2]-G%r;y"Z*W44606 电子园51单片机学习网 m3J&QD2Xx$~3{j

RET

9]#CQL7w44606

1R OpR7_ na44606 电子园51单片机学习网,U}u {,Z


/F9F q%a\.VNkLp44606(2)逆置换子程序

0}-]*}.S%BI44606 电子园51单片机学习网f[4J1g N S5pz^

 

z#W oP ~44606

J ]D/FY'^44606;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)电子园51单片机学习网A5]{zF3d1d

电子园51单片机学习网\F/Wh6?y6o

;功能:将入口寄存器的数据按逆置换表换位。电子园51单片机学习网N_L(kc`kqd z


|I Q)N| ?@44606IPRVS:MOV C,18H ;将m40送到进位标志中电子园51单片机学习网B~.kPr)Q)S


'aLA q;_3W44606MOV 7FH,C ;将进位标志送m1中

M-Ss Dv!kx44606

j,}4ibr44606MOV C,38H电子园51单片机学习网.CN6Z,uhV]OnF-M


.j`2?%b5W)I;B3A1u44606……
m$b4lDC:y%f0ZsRZ44606电子园51单片机学习网*hSR2Df
RET

:NTv-G W,|0IK44606

*g/t4i(mr SZ44606 电子园51单片机学习网+HF W.V(D2jE

电子园51单片机学习网9_~X%hKJ

(3)异或子程序

F_%@`q t s~{$v:Pl44606 电子园51单片机学习网7olFNF(wF!w#]~

;入口寄存器:272625243F3E3D3C,出口寄存器:2B2A2928

RY1~N Si-^2P44606 电子园51单片机学习网#{"A G:U-AP

;功能:将寄存器27262524的内容和寄存器3F3E3D3C的内容异或。结果保存在2B2A2928寄存器中。

2b)^p:R0p&K6vz44606 电子园51单片机学习网F [g] I;X:~,O

XORLF: MOV A,3FH ;将高8位异或电子园51单片机学习网7X&e0w!z I n](h

电子园51单片机学习网xq{,R%K9j8y

XRL A,27H

8t3E \W"hT8G$j5H]44606

"x$R1D,T0Kl~/o)D!T44606MOV 2BH,A ;放入出口处

$q(X(Hm)U#[ E6{44606

6}6J r {$m(k;Z44606MOV A,3EH

`*YuDu e1E2Q(B44606

s#H:gg?.|44606XRL A,26H

3j G8Q#x w1x-K |{)P44606 电子园51单片机学习网V7})Y ]'d*es s'b`#U5[.ua

MOV 2AH,A电子园51单片机学习网+L _x/Q.cJ\"i

电子园51单片机学习网E rQg$osU:TW/{)r

MOV A,3DH电子园51单片机学习网^OueB BW


2F_rf6`O3J5{9i`6n44606XRL A,25H电子园51单片机学习网iX0c7y [;_Q x.N

电子园51单片机学习网#gNgN@d4u

MOV 29H,A电子园51单片机学习网])Qs1o9d&cO3p[g

电子园51单片机学习网Un-Q _!y[

MOV A,3CH电子园51单片机学习网.T&A2w sfD

电子园51单片机学习网 hl?{!V%C]

XRL A,24H

9~@ N f-L44606

4Q7a] J E9{Z S;~`X44606MOV 28H,A

!~ sH#q"KM44606

M O qO!w4B44606RET

J8C3N3J m7P44606 电子园51单片机学习网L+D%E lX j9A"r^

 

E4}G_ xpVAM7]3_44606 电子园51单片机学习网,G Z ~P7yy1DnBdL

(4)S盒子程序

[9u,g#GTp2O,f44606 电子园51单片机学习网.{y;vp+ce6^2b_*g

;入口寄存器:(MSB)2F2E2D2C2B2A2928,出口寄存器:(MSB)27262524

/`8v%vQ$^SC D44606

:Wi)p5E atQ@44606;功能:48位→32位

F7|F'|0s/|xl44606 电子园51单片机学习网?M2r'P'z m

S6TO4: MOV 20h,2FH ;取出高位数据

+at#FXj a"K44606

0}!],B%v9b\@"Zn44606LCALL S162345 ;调用实现Si(b1b6,b2b3b4b5)电子园51单片机学习网7P {*U`s'S szF


BKboUMn-B:v44606;的功能子程序电子园51单片机学习网i tt#T\,vnqs

电子园51单片机学习网^K9{1Mx-z5A

MOV DPTR,#S1TAB;S盒表的首址电子园51单片机学习网Y3d'Wb-F!g h@ b,UH

电子园51单片机学习网%Um"MS3iPm%},s#T

MOV A,21H ;取出第几个S盒

Z4\m d7HQ\-A }6g44606 电子园51单片机学习网m:rf4D5nWy?[\1}g

LCALL DPTRADD

;MB0r0o\6M5fQ44606

](z Ohu@o%T44606CLR A

,~1R ikCd;sX2P#`44606 电子园51单片机学习网(Z{1va0\x`,{aX

MOVC A,@A+DPTR;求出S盒的表地址及S 结果电子园51单片机学习网]JcP3|%Ee

电子园51单片机学习网 `%b]p*}0S

SWAP A电子园51单片机学习网8O#KwM/c.^:p

电子园51单片机学习网|)W.T,|]5m$H

MOV 27H,A ;保存高位结果

{*]ZT!qF44606

5Qf7IBr _n'E2b44606MOV 20H,2EH

v*b#B YF.s8`6a5rM4OV44606 电子园51单片机学习网}%O V['y r

LCALL S162345电子园51单片机学习网t$o8|r9Y

电子园51单片机学习网hm ITM\

;重复电子园51单片机学习网U8J#].\0]m


^"zA Y-_[U M%i44606RET

b0?!s!sR.{!J44606

yat&j/h p+B7Y _ A44606 电子园51单片机学习网Qb+F U@0W


5Y0Q8oo"?$I[44606利用这些子程序,我们成功地开发了以89C52为核心单片机的密钥键盘,可用于金融系统的用户远程密码修改,也可用于其它商用密文的传输。

m}Z"\V4^*j@:S,|44606

上一篇: stm32应用例程 下一篇: 单片机定时器的应用与误差纠正

分享 举报

发表评论 评论 (2 个评论)

涂鸦板