Hàm Băm MD5 và Ứng Dụng
!"#
$%#
&'(
!)
H Ni 17/10/2013
*"+,-+.
/01
!
"#$%&'%
("#
)(*%
*"+,-+.
!
1. +,-,,.
%/&'% 012301400,.'
56789%2,.:2;<2;1=>>,?204@A,
2;1@1>BCB2D,&,.C0 ;-!2E"20%;F,
%,2;<>,&%12>&,12GH1%2,.:22;<I%
J +,@EH1&K4 %3%;<D,2;<>,&%
%2,.:L%,@E
J ),./&'%.2A !4;F%01
!@ML%,H1%,4NO.-,F,%,12301&%;<%
>R2,.P4 %3,?l23S>R
2,.P≠P
o
18P
o
9p8P9
(KeQ1 %1DD %0 B
%23S@1R2,M PP
o
1P≠P
o
8P9p
8P
o
9
(KqQ1>,? ,@;->B0
;<%r4 %3Z,.?l23SR2,.
P18P9pr
e !
!>%,1RD@1>,.TB;%Z; ZQ
J U0>&K,.n0%;F,%/,-,03D@1;%%
%;F, 03K2;<@I%0H1%;F,%/,
J +,!%; Z4 !&^%23P>,&%%
!:B,s12,? ,.12bQ
J a%3%,BDQUt %I% \8t49S %
>1,03D2;<l:u4\84t9v
J [ZQUw2;<l:u4\84t9v2;<,H1tSw03
,3@12;<@I% 0ZZH1t1 %nt-,03
D2;< 2;<5%Yl7-,
J a%312*,Q1 ,2;<: %3E12*,,\4w
;-!2EVeh,(%2,.:2;1x2;<Y !,
#Ve,(%2,.:2;<2;1>2.23,?&,H10x,1
#Ve
>2.D2>%;1Q
J(@;-,M0N•,V!,%2,.:
J(,:20%D,‚=@-, ,,?&,H10s
>,!H1#Ve> B%jf,
JtGiD,x2;<K:2G,>!%Mjf,,3&,3
,?&,12GH1%2,.:
(H1"#D2>%@M>>Veh,,1s0
@1fLqe,4 ,.g44"%,@EI%
!!2E\120xb:,MD2>%@M
!,#Ve,m, !,N:!,<:-,>>ƒ@SP>
!,%2,.:1%Af;-;%Z14%6,i%85@&79
m,i%D,%AVjT@S;%Z1&Z1@M>,?
„4:…:>%&=:…:P1@,d
WbSB>T@S@%>i%0f>,?„
03/&'%m,i%/&'%> 1
SfQƒ@S@%>i%
l&^"fX;1E:4%:,MB:…:sT1
li%RK1R12?03E: % 0 %SU%€1&†
&%SK1D2!,-,:,MBn01,i%t,MBD
H1&i%""#2;<%!V||V"#&^%!i%11
qk‡-,"f8 B%k4|_%,b@M^%>9
2)
Input Q(%2,.:8B902>&,^
Output QB42D,&,.%2,.:%!42A&,!2EVeh,
+,B/2G>Pba02>&,b,8b03I%k9
Bước 1:a,D1%,
0f1%,2;</&'%23I2;1@12DQg444
⊕
]
⊕
‚
8[4]4‚9p]
⊕
8[
∨
8
¬
‚99
¬
Hình 5: Quá trình tạo bản băm của MD5.
Bảng 1: Thut toán MD5
1. A := 67 45 23 01
B := ef cd ab 89
C := 98 ba dc fe
D := 10 32 54 76
2. for i := 0 to n/16 - 1 do {
3. for j := 0 to 15 do T[j] = M[16i + j];
4. AA := A; Mỗi lần xử lý 16 từ, mỗi từ 32 bit, tl: 512 bit.
BB := B;
CC := C;
DD := D;
5. round_1();
6. round_2();
7. round_3();
8. round_4();
9. A = A + AA
Vf„"|hˆV|q qk„‰„gq„h fj‰j"||‰# je"qg„eq#
V#gjˆ|fqh‰ qVjˆj„ke"| fˆV„geˆ„h jqeg"ˆ"e
Vjf|fkheV qeh"egfhg fh"fg#jj# jf‰hj"q|V
B%eQ+,@EI%!H1B%\0jf:G/
:…:2;<Z,.@%!i%D@1%,@E-,@%
!thanh ghi!,^%4!thanh ghi2;<:q#I%>%
%;<%,@E;@;-20eqt…:>%2;<P2E>%!
%M&;%42;<@`%6=&e
qe
)i%V8round_1()9)i%e8round_2()9
Vgp8gŒ+844"9Œ(uVvŒ\uVˆv•••#
e"p8"Œ+8g449Œ(ujvŒ\uVhv9•••|
qp8Œ+8"4g49Œ(ueVvŒ\uV|v9•••Vf
fp8Œ+84"4g9Œ(ukvŒ\uekv9•••ek
#gp8gŒ+844"9Œ(u#vŒ\ueVv9•••#
j"p8"Œ+8g449Œ(uVkvŒ\ueev9•••|
ˆp8Œ+8"4g49Œ(uV#vŒ\ueqv9•••Vf
hp8Œ+84"4g9Œ(ufvŒ\uefv9•••ek
|gp8gŒ+844"9Œ(u|vŒ\ue#v9•••#
Vk"p8"Œ+8g449Œ(uVfvŒ\uejv9•••|
VVp8Œ+8"4g49Œ(uqvŒ\ueˆv9•••Vf
Vep8Œ+84"4g9Œ(uhvŒ\uehv9•••ek
Vqgp8gŒ+844"9Œ(uVqvŒ\ue|v9•••#
Vf"p8"Œ+8g449Œ(uevŒ\uqkv9•••|
V#p8Œ+8"4g49Œ(uˆvŒ\uqVv9•••Vf
Vjp8Œ+84"4g9Œ(uVevŒ\uqev9•••ek
)i%q8round_1()9)i%f8round_4()9
Vgp8gŒ844"9Œ(ukvŒ\uf|v9•••j
e"p8"Œ8g449Œ(uˆvŒ\u#kv9•••Vk
V>i%R;22;<M
em,;-H1 S4"#/&'%>I%!:b,.4@% ,
"f/&'%I%!%6,1@%^% S %
2*,
qR%i%e22;<12*,L8[][‚]‚9238[‚]
8‚9923%,B2!,PR%
fm,;-b%,F0M@% TBH1;-@;-W,?`
2y1,.R%1@?g11=
#(RZL2G2;<@:@%i%eq12*,423
Ss;1
j.!&E3P1i%@%m, •2;<!,;01I
%!2>,.R%1@?U%,@14m, •/&'%f.!&E
3 1
J!KLM(
(!01%2,.:"# 2%,B23Z,.4%K:
>&D%5b151!H1%2,.:-,2>&,^
U%;F,1@I%2> 023S2;<e%2,.:0^%!
B%e•jf;-42> 023,2;<>%2,.:-,!
@;-e•Veh;-("#22;<&iS2,3
>yMD2042b>;%2!,-,,.
:by?Z1G,
mZK%4:bH1%,MRK"#
z% %i1G2;<1I%>
;%!H1"==@=1=@V||q‘H11
"=@,V||j‘H10%,B[,1~1%4"=%%„=%4
[Š,1‹1,4%%V|_kh_ekkf‘H1g@Š=‹=@14[,1~1%4
=="=~=%=@%V_q_ekk#‘H1)1,,a,14
NO
P/&JQ&Q
5(%2,.:2.7C==%=:1&&,%J>Pb,02>&,,1
so#|
kkkk
VVkkk9
e
p“W>&,H1’l’p’
so#|
kkkk
VVkkk’p#|Œ#pjf
pa’’V’’k
&
’’
p“pkVkkkkkVkVkkkkVkkVkkkkVV’’V’’
sofeq
kkkk
’’
so#|
kkkk
VVkkk
pukvuVvduUJVv4U
≡
k&Vj
ukvpkVkkkkkVkVkkkkVkkVkkkkVVVkkkkkkk
uVvpuevpdpuVqvpuVfvp
soqe
kkkk