发布: 2009-4-04 00:29 | 作者: hnrain | 查看: 9次
(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 Krh44606nv6oV+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单片机学习网:|:DK7friDES(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,]44606c#h.?m(bUQ44606 功能是把输入的明文m按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则如下:
0J7UDLO\.{$K&bC44606 电子园51单片机学习网SF{^8RzP}R P a5W"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%_#IPu62,54,46,38,30,22,14,6,
t[M)z3f%c2J1f M44606 电子园51单片机学习网 C D4J,i2Y I q ?l|R:N64,56,48,40,32,24,16,8,电子园51单片机学习网 N sUS;\aM
电子园51单片机学习网X%h@"@;o#K$J/@x57,49,41,33,25,17,9 ,1,
x+ii5[3M]44606B)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 h44606G8w9N2C;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| Zc44606P-U*r8}io44606 (3)T16~T1的迭代计算
G b d Q(g m?Z44606 电子园51单片机学习网"\F_#t4bDES的迭代算法采用模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%^44606R\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>+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)h9T446061y[;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{ ~;ZIP: MOV C,06H ;将m58送到进位标志中电子园51单片机学习网R@Y7`yNJ2xtl
电子园51单片机学习网P"DX8? iRZ8y6AMOV 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;WMOV C,31H ;将m15送到进位标志中
!m*d lm _3n44606 电子园51单片机学习网_-P[,x XP$AMOV 41H,C ;将进位标志送m63中
I"Wv:Y+Dp5I44606"u/lr@}44606MOV C,39H ;将m7送到进位标志中
e:cO7~#Q O44606J``k3q44606MOV 40H,C ;将进位标志送m64中
F2]-G%r;y"Z*W44606 电子园51单片机学习网 m3J&QD2Xx$~3{jRET
9]#CQL7w446061R 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!kx44606j,}4ibr44606MOV C,38H电子园51单片机学习网.CN6Z,uhV]OnF-M
.j`2?%b5W)I;B3A1u44606……
m$b4lDC:y%f0ZsRZ44606电子园51单片机学习网*hSR2Df
RET
*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:~,OXORLF: MOV A,3FH ;将高8位异或电子园51单片机学习网7X&e0w!z I n](h
电子园51单片机学习网xq{,R%K9j8yXRL A,27H
8t3E \W"hT8G$j5H]44606"x$R1D,T0Kl~/o)D!T44606MOV 2BH,A ;放入出口处
$q(X(Hm)U#[ E6{446066}6J r {$m(k;Z44606MOV A,3EH
`*YuDu e1E2Q(B44606s#H:gg?.|44606XRL A,26H
3j G8Q#x w1x-K |{)P44606 电子园51单片机学习网V7})Y ]'d*es s'b`#U5[.uaMOV 2AH,A电子园51单片机学习网+L _x/Q.cJ\"i
电子园51单片机学习网E rQg$osU:TW/{)rMOV A,3DH电子园51单片机学习网^OueB BW
2F_rf6`O3J5{9i`6n44606XRL A,25H电子园51单片机学习网iX0c7y [;_Q x.N
电子园51单片机学习网#gNgN@d4uMOV 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-L446064Q7a] J E9{Z S;~`X44606MOV 28H,A
!~ sH#q"KM44606M 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 mS6TO4: MOV 20h,2FH ;取出高位数据
+at#FXj a"K446060}!],B%v9b\@"Zn44606LCALL S162345 ;调用实现Si(b1b6,b2b3b4b5)电子园51单片机学习网7P {*U`s'S szF
BKboUMn-B:v44606;的功能子程序电子园51单片机学习网i tt#T\,vnqs
电子园51单片机学习网^K9{1Mx-z5AMOV DPTR,#S1TAB;S盒表的首址电子园51单片机学习网Y3d'Wb-F!g h@ b,UH
电子园51单片机学习网%Um"MS3iPm%},s#TMOV A,21H ;取出第几个S盒
Z4\m d7HQ\-A }6g44606 电子园51单片机学习网m:rf4D5nWy?[\1}gLCALL DPTRADD
;MB0r0o\6M5fQ44606](z Ohu@o%T44606CLR A
,~1R ikCd;sX2P#`44606 电子园51单片机学习网(Z{1va0\x`,{aXMOVC A,@A+DPTR;求出S盒的表地址及S 结果电子园51单片机学习网]JcP3|%Ee
电子园51单片机学习网 `%b]p*}0SSWAP A电子园51单片机学习网8O#KwM/c.^:p
电子园51单片机学习网|)W.T,|]5m$HMOV 27H,A ;保存高位结果
{*]ZT!qF446065Qf7IBr _n'E2b44606MOV 20H,2EH
v*b#B YF.s8`6a5rM4OV44606 电子园51单片机学习网}%O V['y rLCALL S162345电子园51单片机学习网t$o8|r9Y
电子园51单片机学习网hm ITM\;重复电子园51单片机学习网U8J#].\0]m
^"zA Y-_[U M%i44606RET
b0?!s!sR.{!J44606yat&j/h p+B7Y _ A44606 电子园51单片机学习网Qb+F U@0W
5Y0Q8oo"?$I[44606利用这些子程序,我们成功地开发了以89C52为核心单片机的密钥键盘,可用于金融系统的用户远程密码修改,也可用于其它商用密文的传输。
m}Z"\V4^*j@:S,|44606
文章评论(0条评论)
登录后参与讨论