Upload
tam
View
21
Download
2
Embed Size (px)
DESCRIPTION
thám mã des
Citation preview
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
ti:
Tm hiu h m chun ci t des v
thm m 3 vng
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
MC LC
I .1 Gii thiu........................................................................................................ 4
I.2 Cc H M Thng Dng: ................................................................................... 5
e. Phng php Affine ............................................................................................ 7
f. Phng php Vigenere ........................................................................................ 8
I.2 LP M DES ................................................................................................. 22
I. 3 THM M DES ............................................................................................ 27
I.3.1. Thm m h DES - 3 vng ................................................................... 32
II.3.2. Thm m h DES 6-vng........................................................................ 38
II.3. 3 Cc thm m vi sai khc ........................................................................ 44
III. CI T THM M DES 3 VNG ....................................................... 45
III.1 Giao Din . .................................................................................................... 45
III.2 X L .............................................................................................................
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
LI NI U
Hin nay, nc ta ang trong giai on tin hnh cng nghip ha, hin i ha t nc.
Tin hc c xem l mt trong nhng ngnh mi nhn. Tin hc v ang ng gp rt nhiu
cho x hi trong mi kha cnh ca cuc sng.
M ha thng tin l mt ngnh quan trng v c nhiu ng dng trong i sng x hi.
Ngy nay, cc ng dng m ha v bo mt thng tin ang c s dng ngy cng ph bin
hn trong cc lnh vc khc nhau trn Th gii, t cc lnh vc an ninh, qun s, quc
phng, cho n cc lnh vc dn s nh thng mi in t, ngn hng
ng dng m ha v bo mt thng tin trong cc h thng thng mi in t, giao dch
chng khn, tr nn ph bin trn th gii v s ngy cng tr nn quen thuc vi ngi
dn Vit Nam. Thng 7/2000, th trng chng khn ln u tin c hnh thnh ti Vit
Nam; cc th tn dng bt u c s dng, cc ng dng h thng thng mi in t ang
bc u c quan tm v xy dng. Do , nhu cu v cc ng dng m ha v bo mt
thng tin tr nn rt cn thit.
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
I. MT S PHNG PHP M HA
I .1 Gii thiu
nh ngha 1.1: Mt h m mt (cryptosystem) l mt b-nm (P, C, K, E, D) tha mn
cc iu kin sau:
1. P l khng gian bn r. tp hp hu hn tt c cc mu tin ngun cn m ha c th c
2. C l khng gian bn m. tp hp hu hn tt c cc mu tin c th c sau khi m ha
3. K l khng gian kh. tp hp hu hn cc kha c th c s dng
4. Vi mi kha kK, tn ti lut m ha ekE v lut gii m dkD tng ng. Lut m
ha ek: P C v lut gii m ek: C P l hai nh x tha mn ,k kd e x x x P
Tnh cht 4. l tnh cht chnh v quan trng ca mt h thng m ha. Tnh cht ny bo
m vic m ha mt mu tin xP bng lut m ha ekE c th c gii m chnh xc
bng lut dkD.
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
nh ngha 1.2: Zm c nh ngha l tp hp {0, 1, ..., m-1}, c trang b php cng (k
hiu +) v php nhn (k hiu l ). Php cng v php nhn trong Zm c thc hin tng
t nh trong Z, ngoi tr kt qu tnh theo modulo m
V d: Gi s ta cn tnh gi tr 11 13 trong Z16. Trong Z, ta c kt qu ca php nhn
1113=143. Do 14315 (mod 16) nn 1113=15 trong Z16.
Mt s tnh cht ca Zm
1. Php cng ng trong Zm, i.e., a, b Zm, a+b Zm
2. Tnh giao hn ca php cng trong Zm, i.e., a, b Zm, a+b =b+a
3. Tnh kt hp ca php cng trong Zm, i.e., a, b, c Zm, (a+b)+c =a+(b+c)
4. Zm c phn t trung ha l 0, i.e., a Zm, a+0=0+a=a
5. Mi phn t a trong Zm u c phn t i l m a
6. Php nhn ng trong Zm, i.e., a, b Zm, ab Zm
7. Tnh giao hn ca php cng trong Zm, i.e., a, b Zm, ab=ba
8. Tnh kt hp ca php cng trong Zm, i.e., a, b, c Zm, (ab)c =a(bc)
9. Zm c phn t n v l 1, i.e., a Zm, a1=1a=a
10. Tnh phn phi ca php nhn i vi php cng, i.e., a, b, c Zm, (a+b)c
=(ac)+(bc)
11. Zm c cc tnh cht 1, 3 5 nn to thnh 1 nhm. Do Zm c tnh cht 2 nn to thnh
nhm Abel. Zm c cc tnh cht (1) (10) nn to thnh 1 vnh
I.2 Cc H M Thng Dng:
a. H M y (Shift Cipher )
Shift Cipher l mt trong nhng phng php lu i nht c s dng m
ha. Thng ip c m ha bng cch dch chuyn (xoay vng) tng k t i k v tr trong
bng ch ci.
Phng php Shift Cipher
Cho P = C = K = Z26. Vi 0 K 25, ta nh ngha
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
eK = x + K mod 26
v
dK = y - K mod 26
(x,y Z26)
trong 26 l s k t trong bng ch ci La tinh, mt cch tng t cng c th
nh ngha cho mt bng ch ci bt k. ng thi ta d dng thy rng m y l mt h mt
m v dK(eK(x)) = x vi mi xZ26.
b. H KEYWORD-CEASAR
Trong h m ny kha l mt t no c chn trc, v d PLAIN. T ny xc
nh dy s nguyn trong Z26 (15,11,0,8,13) tng ng vi v tr cc ch ci ca cc ch
c chn trong bng ch ci. By gi bn r s c m ha bng cch dng cc hm lp
m theo th t:
e15, e11, e0, e8, e13, e15, e11, e0, e8, e,...
vi eK l hm lp m trong h m chuyn.
c. H M Vung (SQUARE)
Trong h ny cc t kha c dng theo mt cch khc hn. Ta dng bng ch ci
ting Anh (c th b i ch Q, nu mun tng s cc ch s l mt s chnh phng) v i
hi mi ch trong t kha phi khc nhau. By gi mi ch ca bng ch ci c vit
di dng mt hnh vung, bt u bng t kha v tip theo l nhng ch ci cn li theo
th t ca bng ch.
d. M th v
Mt h m khc kh ni ting . H m ny c s dng hng trm nm nay.
Phng php :
Cho P = C = Z26. K gm tt c cc hn v c th c ca 26 k hiu 0,...,25.
Vi mi hn v K, ta nh ngha:
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
e(x) = (x)
v nh ngha d(y) = -1(y)
vi -1 l hn v ngc ca hn v .
Trong m th v ta c th ly P v C l cc bng ch ci La tinh. Ta s dng Z26 trong
m y v lp m v gii m u l cc php tn i s.
e. Phng php Affine
Cho P = C = Z26 v cho
K = {(a,b) Z26 Z26 : gcd(a,26) = 1}
Vi K = (a,b) K, ta xc nh
eK(x) = ax+b mod 26
v
dK = a-1(y-b) mod 26
(x,y Z26)
Phng php Affine li l mt trng hp c bit khc ca Substitution Cipher.
c th gii m chnh xc thng tin c m ha bng hm ek E th ek phi l mt
song nh. Nh vy, vi mi gi tr yZ26, phng trnh ax+by (mod 26) phi c nghim
duy nht xZ26.
Phng trnh ax+by (mod 26) tng ng vi ax(yb ) (mod 26). Vy, ta ch cn kho
st phng trnh ax(yb ) (mod 26)
nh l1.1: Phng trnh ax+by (mod 26) c nghim duy nht xZ26 vi mi gi tr bZ26 khi
v ch khi a v 26 nguyn t cng nhau.
Vy, iu kin a v 26 nguyn t cng nhau bo m thng tin c m ha bng hm ek c
th c gii m v gii m mt cch chnh xc.
Gi (26) l s lng phn t thuc Z26 v nguyn t cng nhau vi 26.
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
nh l 1.2: Nu
m
i
ei
ipn1
vi pi l cc s nguyn t khc nhau v ei Z+, 1 i m th
m
i
ei
ei
ii ppn1
1
Trong phng php m ha Affine , ta c 26 kh nng chn gi tr b, (26) kh nng chn gi
tr a. Vy, khng gian kha K c tt c n(26) phn t.
Vn t ra cho phng php m ha Affine Cipher l c th gii m c thng tin
c m ha cn phi tnh gi tr phn t nghch o a1 Z26.
f. Phng php Vigenere
phng php m ha Vigenere s dng mt t kha (keyword) c di m. C th xem
nh phng php m ha Vigenere Cipher bao gm m php m ha Shift Cipher c p dng
lun phin nhau theo chu k.
Khng gian kha K ca phng php Vigenere c s phn t l 26, ln hn hn phng
php s lng phn t ca khng gian kha K trong phng php Shift Cipher. Do , vic tm
ra m kha k gii m thng ip c m ha s kh khn hn i vi phng php Shift
Cipher.
Phng php m ha Vigenere Cipher
Chn s nguyn dng m. nh ngha P = C = K = (Z26)m
K = { (k0, k1, ..., kr-1) (Z26)r}
Vi mi kha k = (k0, k1, ..., kr-1) K, nh ngha:
ek(x1, x2, ..., xm) = ((x1+k1) mod 26, (x2+k2) mod n, ..., (xm+km) mod 26)
dk(y1, y2, ..., ym) = ((y1k1) mod n, (y2k2) mod n, ..., (ymkm) mod 26)
vi x, y (Z26)m
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
g. H m Hill
Phng php Hill Cipher c Lester S. Hill cng b nm 1929: Cho s nguyn dng m,
nh ngha P = C = (Z26)m. Mi phn t xP l mt b m thnh phn, mi thnh phn thuc Z26.
tng chnh ca phng php ny l s dng m t hp tuyn tnh ca m thnh phn trong
mi phn t xP pht sinh ra m thnh phn to thnh phn t yC.
Phng php m ha Hill Cipher
Chn s nguyn dng m. nh ngha:
P = C = (Z26)m v K l tp hp cc ma trn mm kh nghch
Vi mi kha K
kkk
kkkkk
k
mmmm
m
m
,2,1,
,21,2
,12,11,1
, nh ngha:
mmmm
m
m
mk
kkk
kkkkk
xxxxkxe
,2,1,
,21,2
,12,11,1
21 ,...,,
vi x=(x1, x2, ..., xm) P
v dk(y) = yk1 vi y C
Mi php tn s hc u c thc hin trn Zn
h. M hn v
Nhng phng php m ha nu trn u da trn tng chung: thay th mi k t trong
thng ip ngun bng mt k t khc to thnh thng ip c m ha. tng chnh
ca phng php m hn v l vn gi nguyn cc k t trong thng ip ngun m ch thay
i v tr cc k t; ni cch khc thng ip ngun c m ha bng cch sp xp li cc k
t trong .
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Phng php m ha m hn v
Chn s nguyn dng m. nh ngha:
P = C = (Z26)m v K l tp hp cc hn v ca m phn t {1, 2, ..., m}
Vi mi kha K, nh ngha:
mm xxxxxxe ,...,,...,, 2121 v
mm yyyyyyd 111 ,...,,...,, 2121
vi 1 hn v ngc ca
Phng php m hn v chnh l mt trng hp c bit ca phng php Hill. Vi mi
hn v ca tp hp {1, 2, ..., m} , ta xc nh ma trn k = (ki, j ) theo cng thc sau:
lai ngc hptrng trong
neu,0,1
,ji
k ji
Ma trn k l ma trn m mi dng v mi ct c ng mt phn t mang gi tr 1, cc phn
t cn li trong ma trn u bng 0. Ma trn ny c th thu c bng cch hn v cc hng hay
cc ct ca ma trn n v Im nn k l ma trn kh nghch. R rng, m ha bng phng php
Hill vi ma trn k hn tn tng ng vi m ha bng phng php m hn v vi hn v .
d. M vng
Trong cc h trc u cng mt cch thc l cc phn t k tip nhau ca bn r u
c m ha vi cng mt kha K. Nh vy xu m y s c dng sau:
y = y1y2... = eK(x1) eK(x2)...
Cc h m loi ny thng c gi l m khi (block cipher).
Cn i vi cc h m dng. tng y l sinh ra mt chui kha z = z1z2..., v s
dng n m ha xu bn r x = x1x2...theo qui tc sau:
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
)...()(... 2121 21 xexeyyy zz
I.3 Quy trnh thm m:
C mi phng php m h ta li c mt phng php thm m tng ng nhng
nguyn tc chung vic thm m c thnh cng th yu cu ngi thm m phi
bit h m no c dng h. Ngi ra ta cn phi bit c bn m v bn r ng.
nhn chung cc h m i xng l d ci t vi tc thc thi nhanh.
Tnh an tn ca n ph thuc vo cc yu t :
Khng gian kh phi ln
vi cc php trn thch hp cc h m i xng c th to ra c mt h m
mi c tnh an tn cao.
bo mt cho vic truyn kha cng cn c x l mt cch nghim tc.
V mt h m h d liu ra i (DES). DES c xem nh l chun m ha d liu
cho cc ng dng t ngy 15 thng 1 nm 1977 do y ban Quc gia v Tiu chun ca M
xc nhn v c 5 nm mt ln li c chnh sa, b sung.
DES l mt h m c trn bi cc php th v hn v. vi php trn thch hp th
vic gii m n li l mt bi tn kh kh. ng thi vic ci t h m ny cho nhng ng
dng thc t li kh thun li. Chnh nhng l do n c ng dng rng ri ca DES
trong sut hn 20 nm qua, khng nhng ti M m cn l hu nh trn khp th gii. Mc
d theo cng b mi nht (nm 1998) th mi h DES, vi nhng kh nng ca my tnh hin
nay, u c th b kha trong hn 2 gi. Tuy nhin DES cho n nay vn l mt m hnh
chun cho nhng ng dng bo mt trong thc t.
II. H M CHUN DES (Data Encryption Standard)
II.1 c t DES
Phng php DES m ha t x c 64 bit vi kha k c 56 bit thnh mt t c y 64 bit.
Thut tn m ha bao gm 3 giai on:
1. Vi t cn m ha x c di 64 bit, to ra t x0 (cng c di 64 bit) bng cch hn
v cc bit trong t x theo mt hn v cho trc IP (Initial Permutation). Biu din x0 = IP(x)
= L0R0, L0 gm 32 bit bn tri ca x0, R0 gm 32 bit bn phi ca x0
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
L0 R0
x0
Hnh.1 Biu din dy 64 bit x thnh 2 thnh phn L v R
2. Xc nh cc cp t 32 bit Li, Ri vi 1 i 16theo quy tc sau:
Li = Ri-1
Ri = Li-1 f (Ri-1, Ki)
vi biu din php tn XOR trn hai dy bit, K1, K2, ..., K16 l cc dy 48 bit pht sinh
t kha K cho trc (Trn thc t, mi kha Ki c pht sinh bng cch hn v cc bit
trong kha K cho trc).
L i-1 Ri-1
f Ki
L i Ri
Hnh.2 Quy trnh pht sinh dy 64 bit LiRi t dy 64 bit Li-1Ri-1v kha Ki
3. p dng hn v ngc IP-1 i vi dy bit R16L16, thu c t y gm 64 bit. Nh vy, y
= IP-1 (R16L16)
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Hm f c s dng bc 2 l
A
B1 B2 B3 B4 B5 B6 B7 B8
J
E(A)
E
+
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Hm f c gm 2 tham s: Tham s th nht A l mt dy 32 bit, tham s th hai J l mt
dy 48 bit. Kt qu ca hm f l mt dy 32 bit. Cc bc x l ca hm f(A, J)nh sau:
Tham s th nht A (32 bit) c m rng thnh dy 48 bit bng hm m rng E. Kt qu
ca hm E(A) l mt dy 48 bit c pht sinh t A bng cch hn v theo mt th t
nht nh 32 bit ca A, trong c 16 bit ca A c lp li 2 ln trong E(A).
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Thc hin php tn XOR cho 2 dy 48 bit E(A) v J, ta thu c mt dy 48 bit B. Biu
din B thnh tng nhm 6 bit nh sau:B = B1B2B3B4B5B6B7B8
S dng 8 ma trn S1, S2,..., S8, mi ma trn Si c kch thc 416 v mi dng ca ma trn
nhn 16 gi tr t 0 n 15. Xt dy gm 6 bit Bj = b1b2b3b4b5b6, Sj(Bj)
c xc nh bng gi tr ca phn t ti dng r ct c ca Sj, trong , ch s dng r c
biu din nh phn l b1b6, ch s ct c c biu din nh phn l b2b3b4b5. Bng cch
ny, ta xc nh c cc dy 4 bit Cj = Sj(Bj), 1 j 8.
Tp hp cc dy 4 bit Cj li. ta c c dy 32 bit C = C1C2C3C4C5C6C7C8. Dy 32 bit thu
c bng cch hn v C theo mt quy lut P nht nh chnh l kt qu ca hm F(A,
J)
cc hm c s dng trong DES.
Hn v khi to IP s nh sau:
IP
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
iu ny c ngha l bit th 58 ca x l bit u tin ca IP(x); bit th 50 ca x l bit
th hai ca IP(x) v.v.
Hn v ngc IP-1 s l:
IP-1
40
39
38
37
36
35
34
33
8
7
6
5
4
3
2
1
48
47
46
45
44
43
42
41
16
15
14
13
12
11
10
9
56
55
54
53
52
51
50
49
24
23
22
21
20
19
18
17
64
63
62
61
60
59
58
57
32
31
30
29
28
27
26
25
Hm m rng E c c t theo bng sau:
E bng chn bit
32
4
8
12
1
5
9
13
2
6
10
14
3
7
11
15
4
8
12
16
5
9
13
17
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
16
20
24
28
17
21
25
29
18
22
26
30
19
23
27
31
20
24
28
32
21
25
29
1
Tm S-hp v hn v P s c biu din nh sau:
S1
14
0
4
15
4
15
1
12
13
7
14
8
1
4
8
2
2
14
13
4
15
2
6
9
11
13
2
1
8
1
11
7
3
10
15
5
10
6
12
11
6
12
9
3
12
11
7
14
5
9
3
10
9
5
10
0
0
3
5
6
7
8
0
13
S2
15
3
0
13
1
13
14
8
8
4
7
10
14
7
11
1
6
15
10
3
11
2
4
15
3
8
13
4
4
14
1
2
9
12
5
11
7
0
8
6
2
1
12
7
13
10
6
12
12
6
9
0
0
9
3
5
5
11
2
14
10
5
15
9
S3
10
13
0
7
9
0
14
9
6
3
3
4
15
6
5
10
1
2
13
8
12
5
7
14
11
12
4
11
2
15
8
1
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
13
1
6
10
4
13
9
0
8
6
15
9
3
8
0
7
11
4
1
15
2
14
12
3
5
11
10
5
14
2
7
12
S4
7
13
10
3
13
8
6
15
14
11
9
0
3
5
0
6
0
6
12
10
6
15
11
1
9
0
7
13
10
3
13
8
1
4
15
9
2
7
1
4
8
2
3
5
5
12
14
11
11
1
5
12
12
10
2
7
4
14
8
2
15
9
4
14
S5
2
14
4
11
12
11
2
8
4
2
1
12
1
12
11
7
7
4
10
0
10
7
13
14
11
13
7
2
6
1
8
13
8
5
15
6
5
0
9
15
3
15
12
0
15
10
5
9
13
3
6
10
0
9
3
4
14
8
0
5
9
6
14
3
S6
12
10
9
4
1
15
14
3
10
4
15
2
15
2
5
12
9
7
2
9
2
12
8
5
6
9
12
15
8
5
3
10
0
6
7
11
13
1
0
14
3
13
4
1
4
14
10
7
14
0
1
6
7
11
13
0
5
3
11
8
11
8
6
13
S7
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
4
13
1
6
11
0
4
11
2
11
11
13
14
7
13
8
15
4
12
1
0
9
3
4
8
1
7
10
13
10
14
7
3
14
10
9
12
3
15
5
9
5
6
0
7
12
8
15
5
2
0
14
10
15
5
2
6
8
9
3
1
6
2
12
S8
13
1
7
2
2
15
11
1
8
13
4
14
4
8
1
7
6
10
9
4
15
3
12
10
11
7
14
8
1
4
2
13
10
12
0
15
9
5
6
12
3
6
10
9
14
11
13
0
5
0
15
3
0
14
3
5
12
9
5
6
7
2
8
11
P
16
29
1
5
2
32
19
22
7
12
15
18
8
27
13
11
20
28
23
31
24
3
30
4
21
17
26
10
14
9
6
25
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
K l xu c di 64 bit, trong c 56 bit dng lm kha v 8 bit dng kim tra
s bng nhau ( pht hin li). Cc bit cc v tr 8, 16, ..., 64 c xc nh, sao cho mi
byte cha s l cc s 1. V vy, tng li c th c pht hin trong mi 8 bit. Cc bit kim
tra s bng nhau l c b qua khi tnh lch kha.
1. Cho kha 64 bit K, loi b cc bit kim tra v hn v cc bit cn li ca K tng
ng vi hn v (c nh) PC-1. Ta vit PC-1(K) = C0D0, vi C0 bao gm 28 bit u tin ca
PC-1(K) v D0 l 28 bit cn li.
2. Vi i nm trong khong t 1 n 16, ta tnh
Ci = LSi(Ci-1)
Di = LSi(Di-1)
v Ki = PC-2(CiDi), LSi biu din php chuyn chu trnh (cyclic shift) sang tri hoc ca mt
hoc ca hai v tr ty thuc vo tr ca i; y mt v tr nu i = 1, 2, 9 hoc 16 v y 2 v tr
trong nhng trng hp cn li. PC-2 l mt hn v c nh khc.
Vic tnh lch kha c minh ha nh hnh v sau:
K
PC-1
C0 D0
C1 D1 PC-2 K1
LS1LS1
LS2 LS2
...
LS16 LS16
C16 D16 PC-2 K16
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Cc hn v PC-1 v PC-2 c s dng trong vic tnh lch kha l nh sau:
PC-1
57
1
10
19
63
7
14
21
49
58
2
11
55
62
6
13
41
50
59
34
7
54
61
5
33
42
51
60
39
46
53
28
25
34
43
52
31
38
45
20
17
26
35
44
23
30
37
12
9
18
27
36
15
22
29
4
PC-2
14
3
23
17
28
19
11
15
12
24
6
4
1
21
26
5
10
8
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
16
41
30
44
46
7
50
40
49
42
27
31
51
39
50
20
37
45
56
36
13
47
33
34
29
2
55
48
53
32
By gi ta s hin th kt qu vic tnh lch kha. Nh nhn xt trn, mi vng s
dng kha 48 bit tng ng vi 48 bit trong K. Cc thnh phn trong cc bng sau s ch ra
cc bit trong K c s dng trong cc vng khc nhau.
I.2 LP M DES
y l v d v vic lp m s dng DES. Gi s ta m ha bn r sau trong dng thp
lc phn (Hexadecimal)
0123456789ABCDEF
s dng kha thp lc phn
133457799BBCDFF1
Kha trong dng nh phn khng c cc bit kim tra s l:
00010010011010010101101111001001101101111011011111111000.
Ap dng IP, ta nhn c L0 v R0 (trong dng nh phn) :
L0
L1 = R0
=
=
11001100000000001100110011111111
11110000101010101111000010101010
16 vng lp m c th hin nh sau:
E(R0)
K1
=
=
011110100001010101010101011110100001010101010101
000110110000001011101111111111000111000001110010
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
E(R0) K1
Output S-hp
f(R0,K1)
L2 = R1
=
=
=
=
011000010001011110111010100001100110010100100111
01011100100000101011010110010111
00100011010010101010100110111011
11101111010010100110010101000100
E(R1)
K2
E(R1) K2
Output S-hp
f(R1, K2)
L3 = R2
=
=
=
=
=
=
011101011110101001010100001100001010101000001001
011110011010111011011001110110111100100111100101
000011000100010010001101111010110110001111101100
11111000110100000011101010101110
00111100101010111000011110100011
11001100000000010111011100001001
E(R2)
K3
E(R2) K3
S-box output
f(R2, K3)
L4 = R3
=
=
=
=
=
=
111001011000000000000010101110101110100001010011
010101011111110010001010010000101100111110011001
101100000111110010001000111110000010011111001010
00100111000100001110000101101111
01001101000101100110111010110000
10100010010111000000101111110100
E(R3)
K4
E(R3) K4
S-box output
f(R3, K4)
=
=
=
=
=
010100000100001011111000000001010111111110101001
011100101010110111010110110110110011010100011101
001000101110111100101110110111100100101010110100
00100001111011011001111100111010
10111011001000110111011101001100
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
L5 = R4 = 011101110
E(R4)
K5
E(R4) K5
Xut S-hp
f(R4, K5)
L6 = R5
=
=
=
=
=
=
101110101110100100000100000000000000001000001010
011111001110110000000111111010110101001110101000
110001100000010100000011111010110101000110100010
01010000110010000011000111101011
00101000000100111010110111000011
10001010010011111010011000110111
E(R5)
K6
E(R5) K6
S-box output
f(R5, K6)
L7 = R6
=
=
=
=
=
=
110001010100001001011111110100001100000110101111
011000111010010100111110010100000111101100101111
101001101110011101100001100000001011101010000000
01000001111100110100110000111101
10011110010001011100110100101100
11101001011001111100110101101001
E(R6)
K7
E(R6) K7
S-box output
f(R6, K7)
L8 = R7
=
=
=
=
=
=
111101010010101100001111111001011010101101010011
111011001000010010110111111101100001100010111100
000110011010111110111000000100111011001111101111
00010000011101010100000010101101
10001100000001010001110000100111
00000110010010101011101000010000
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
E(R7)
K8
E(R7) K8
S-box output
f(R7, K8)
L9 = R8
=
=
=
=
=
=
000000001100001001010101010111110100000010100000
111101111000101000111010110000010011101111111011
111101110100100001101111100111100111101101011011
01101100000110000111110010101110
00111100000011101000011011111001
11010101011010010100101110010000
E(R8)
K9
E(R8) K9
S-box output
f(R8, K9)
L10 = R9
=
=
=
=
=
=
011010101010101101010010101001010111110010100001
111000001101101111101011111011011110011110000001
100010100111000010111001010010001001101100100000
00010001000011000101011101110111
00100010001101100111110001101010
00100100011111001100011001111010
E(R9)
K10
E(R9) K10
S-box output
f(R9, K10)
L11 = R10
=
=
=
=
=
=
000100001000001111111001011000001100001111110100
101100011111001101000111101110100100011001001111
101000010111000010111110110110101000010110111011
11011010000001000101001001110101
01100010101111001001110000100010
10110111110101011101011110110010
E(R10)
K11
E(R10) K11
S-box output
=
=
=
=
010110101111111010101011111010101111110110100101
001000010101111111010011110111101101001110000110
011110111010000101111000001101000010111000100011
01110011000001011101000100000001
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
f(R10, K11)
L12 = R11
=
=
11100001000001001111101000000010
11000101011110000011110001111000
E(R11)
K12
E(R11) K12
S-box output
f(R11, K12)
L13 = R12
011000001010101111110000000111111000001111110001
011101010111000111110101100101000110011111101001
000101011101101000000101100010111110010000011000
01111011100010110010011000110101
11000010011010001100111111101010
01110101101111010001100001011000
E(R12)
K13
E(R12) K13
S-box output
f(R12, K13)
L14 = R13
=
=
=
=
=
=
001110101011110111111010100011110000001011110000
100101111100010111010001111110101011101001000001
101011010111100000101011011101011011100010110001
10011010110100011000101101001111
11011101101110110010100100100010
00011000110000110001010101011010
E(R13)
K14
E(R13) K14
S-box output
f(R13, K14)
L15 = R14
=
=
=
=
=
=
000011110001011000000110100010101010101011110100
010111110100001110110111111100101110011100111010
010100000101010110110001011110000100110111001110
01100100011110011001101011110001
10110111001100011000111001010101
11000010100011001001011000001101
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
E(R14)
K15
E(R14) K15
S-box output
f(R14, K15)
L16 = R15
=
=
=
=
=
=
111000000101010001011001010010101100000001011011
101111111001000110001101001111010011111100001010
010111111100010111010100011101111111111101010001
10110010111010001000110100111100
01011011100000010010011101101110
01000011010000100011001000110100
E(R15)
K16
E(R15) K16
S-box output
f(R15, K16)
R16
=
=
=
=
=
=
001000000110101000000100000110100100000110101000
110010110011110110001011000011100001011111110101
111010110101011110001111000101000101011001011101
10100111100000110010010000101001
11001000110000000100111110011000
00001010010011001101100110010101
Cui cng, p dng IP-1 cho R16L16 ta nhn c bn m trong dng thp lc phn
nh sau:
85E813540F0AB405
I. 3 THM M DES
Mt phng php rt ni ting trong thm m DES l thm m vi sai (differential
cryptanalysic) do Biham v Shamir xut. l phng php thm vi bn r c chn.
N khng c s dng trong thc t thm m DES 16 vng, m ch c s dng
thm cc h DES c t vng hn.
By gi ta s m t nhng tng c bn ca k thut ny. t mc ch thm
m, ta c th b qua hn v khi to IP v hn v o ca n (bi v iu khng cn thit
cho vic thm m). Nh nhn xt trn, ta xt cc h DES n vng, vi n 16. Trong ci
t ta c th coi L0R0 l bn r v LnRn nh l bn m.
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Thm m vi sai i hi phi so snh x-or (exclusive-or) ca hai bn r vi x-or ca
hai bn m tng ng. Ni chung, ta s quan st hai bn r L0R0 v L0*R0* vi tr x-or c
c t L0R0 = L0R0 L0*R0*. Trong nhng tho lun sau ta s s dng k hiu () ch x-
or ca hai xu bit.
nh ngha 3.1: Cho Sj l mt S-hp (1 j 8). Xt mt cp xu 6-bit l (Bj,Bj* ). Ta
ni rng, xu nhp x-or (ca Sj) l Bj Bj* v xu xut x-or (ca Sj) l Sj(Bj) Sj(Bj*).
Ch l xu nhp x-or l xu bit c di 6, cn xu xut x-or c di 4.
nh ngha 3.2: Vi bt k Bj (Z2) 6, ta nh ngha tp (Bj) gm cc cp (Bj,Bj*)
c x-or nhp l Bj.
D dng thy rng, bt k tp (Bj) no cng c 26 = 64 cp, v do
(Bj) = {(Bj, Bj Bj) : Bj (Z2) 6 }
Vi mi cp trong (Bj), ta c th tnh xu x-or xut ca Sj v lp c phn b kt
qu. C 64 xu xut x-or, c phn b trong 24 = 16 gi tr c th c. Tnh khng ng u
ca cc phn b l c s m thm.
V d 3.1: Gi s ta xt S1 l S-hp u tin v xu nhp x-or l 110100. Khi
(110100) = {(000000, 110100), (000001, 110101), ..., (111111, 001011)}
Vi mi cp trong tp (110100), ta tnh xu xut x-or ca S1. Chng hn,
S1(000000) = E16 = 1110, S1(110100) = 1001,
nh vy xu xut x-or cho cp (000000,110100) l 0111.
Nu thc hin iu cho 64 cp trong (110100) th ta nhn c phn b ca cc
xu x-or xut sau:
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 8 16 6 2 0 0 12 6 0 0 0 0 8 0 6
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Trong v d 3.1, ch c 8 trong s 16 xu x-or xut c th c xut hin tht s. V d
c th ny ch ra s phn b rt khng u ca cc xu x-or xut. Ni chung, nu ta c
nh S-hp Sj v xu nhp x-or Bj, th trung bnh c khong 75 - 80% cc xu x-or xut c
th c xut hin thc s.
m t cc phn b ta a ra nh ngha sau.
nh ngha 3.3: Vi 1 j 8 v vi cc xu bit Bj di 6 v Cj di 4, ta nh
ngha:
INj(Bj,Cj) = {Bj (Z2)6 : Sj(Bj) Sj(Bj Bj) = Cj}
v
Nj(Bj, Cj) = INj(Bj, Cj)
Bng sau s cho cc xu nhp c th c vi xu x-or nhp 110100
Xu xut x-or Cc xu nhp c th c
0000
0001 000011, 001111, 011110, 011111
101010, 101011, 110111, 111011
0010
000100, 000101, 001110, 010001
010010, 010100, 011010, 011011
100000, 100101, 010110, 101110
101111, 110000, 110001, 111010
0011 000001, 000010, 010101, 100001
110101, 110110
0100 010011, 100111
0101
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
0110
0111
000000, 001000, 001101, 010111
011000, 011101, 100011, 101001
101100, 110100, 111001, 111100
1000 001001, 001100, 011001, 101101
111000, 111101
1001
1010
1011
1100
1101 000110, 010000, 010110, 011100
110010, 100100, 101000, 110010
1110
1111 000111, 001010, 001011, 110011
111110, 111111
Nj(Bj, Cj) tnh s cc cp vi xu nhp x-or bng Bj c xu xut x-or bng Cj vi
S-hp Sj. Cc cp c cc xu nhp x-or c c t v a ra cch tnh cc xu xut x-or
c th nhn c t tp INj(Bj, Cj). rng, tp ny c th phn thnh Nj(Bj, Cj) /2 cp,
mi cp c xu x-or nhp bng Bj.
Phn b trong v d 3.1 cha cc tr N1(110100, C1), C1 (Z2)4. Trong bng trn
cha cc tp IN(110100, C1).
Vi mi tm S-hp, c 64 xu nhp x-or c th c. Nh vy, c 512 phn b c th
tnh c. Nhc li l, xu nhp cho S-hp vng th i l B= E J, vi E = E(Ri-1) l m
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
rng ca Ri-1 v J = Ki gm cc bit kha ca vng i. By gi xu nhp x-or (cho tt c tm S-
hp) c th tnh c nh sau:
B B* = (E J) (E* J) = E E*
iu ny rt quan trng thy rng, xu nhp x-or khng ph thuc vo cc bit kha
J. (Do , xu xut x-or cng khng ph thuc vo cc bit kha.)
Ta s vit mi B, E v J nh l ni ca tm xu 6-bit:
B = B1B2B3B4B5B6B7B8
E = E1E2E3E4E5E6E7E8
J = J1J2J3J4J5J6J7J8
v ta cng s vit B* v E* nh vy. By gi gi s l ta bit cc tr Ej v Ej* vi mt j no
, 1 j 8, v tr ca xu xut x-or cho Sj, Cj = Sj(Bj) Sj(Bj* ). Khi s l:
Ej Jj INj(Ej, Cj),
vi Ej = Ej Ej*.
nh ngha 3.4: Gi s Ej v Ej* l cc xu bit di 6, v Cj l xu bit di 4. Ta nh
ngha:
testj(Ej, Ej*, Cj) = { Bj Ej : Bj INj(Ej, Cj) },
vi Ej = Ej Ej*.
nh l 3.1:
Gi s Ej v Ej* l hai xu nhp cho S-hp Sj, v xu xut x-or cho Sj l Cj. K hiu
Ej = Ej Ej* . Khi cc bit kha Jj c trong tp testj(Ej, Ej*, Cj).
, chnh l cc xu bit Nj(Ej, Cj) di 6 trong tp testj(Ej, Ej*, Cj); gi tr
chnh xc ca Jj phi l mt trong s .
V d 3.2:
Gi s E1 = 000001, E1*= 110101 v C1= 1101. Do N1(110101,1101) = 8, ng bng 8
xu bit trong tp test1(000001, 110101, 1101). T bng trn ta thy rng
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
IN1(110100, 1101) = {000110, 010000, 010110, 011100, 100010, 100100, 101000, 110010}
Cho nn
test1(000001, 110101,1101) = {000111, 010001, 010111, 011101, 100011, 100101, 101001,
110011}
Nu ta c mt b ba th hai nh th E1, E1*, C1, khi ta s nhn c tp th hai
test1 ca cc tr cho cc bit kha trong J1. Tr ng ca J1 cn phi nm trong giao ca cc S-
hp. Nu ta c mt vi b ba nh vy, khi ta c th mau chng tm c cc bit kha
trong J1. Mt cch r rng hn thc hin iu l lp mt bng ca 64 b m biu din
cho 64 kh nng ca ca 6 kha bit trong J1. B m s tng mi ln, tng ng vi s xut
hin ca cc bit kha trong tp test1 cho mt b ba c th. Cho t b ba, ta hy vng tm c
duy nht mt b m c tr t; tr s tng ng vi tr ng ca cc bit kha trong J1.
I.3.1. Thm m h DES - 3 vng
By gi ta s xt tng va trnh by cho vic thm m h DES - ba vng. Ta s bt
u vi cp bn r v cc bn m tng ng: L0R0, L0*R0*, L3R3 v L3*R3*. Ta c th biu
din R3 nh sau:
R3 = L2 f(R2, K3)
= R1 f(R2, K3)
= L0 f(R0, K1) f(R2, K3)
R3* c th biu din mt cch tng t , do vy:
R3 = L0 f(R0, K1) f(R0*, K1) f(R2, K3) f(R2*, K3)
By gi, gi s ta chn c cc bn r sao cho R0 = R0*, chng hn:
R0 = 00...0
Khi f(R0, K1) = f(R0*, K1), v do :
R3 = L0 f(R2, K3) f(R2*, K3)
im ny R3 l c bit khi n c th tnh c t hai bn m, v L0 l bit c
khi n c th tnh c t hai bn r. Ngha l ta c th tnh c f(R2,K3)f(R2*,K3) t
phng trnh:
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
f(R2, K3) f(R2*, K3) = R3 L0
By gi f(R2, K3) = P(C) v f(R2*, K3) = P(C*), vi C v C* tng ng l k hiu
ca hai xu xut ca tm S-hp (nhc li, P l c nh, l hn v c bit cng khai). Nn:
P(C) P(C*) = R3 L0
v kt qu l:
C = C C* = P-1(R3 L0) (1)
l xu xut x-or cho tm S-hp trong vng ba.
By gi, R2 = L3 v R2* = L3* l bit (chng l mt phn ca cc bn m). T
y ta c th tnh:
E = E(L3) (2)
v
E* = E(L3*) (3)
s dng hm m rng E c bit cng khai. Chng l nhng xu nhp cho cc S-hp cho
vng ba. Nh vy gi ta bit E, E*, v C cho vng ba v ta c th tip tc xy dng cc
tp test1, ..., test8 ca cc tr c th c cho cc bit kha trong J1, ..., J8.
Gii thut va xt c th biu din bi cc m sau:
Input: L0R0, L0*R0*, L3R3 v L3*R3*, vi R0 = R0*
1. Tnh C = P-1(R3 L0)
2. Tnh E = E(L3) v E* = E(L*)
3. for j = 1 to 8 do
compute testj(Ej, Ej*, Cj)
Vic m thm s s dng mt s b ba E, E*, C nh vy. Ta s lp tm bng cc b
m v do xc nh c 48 bit trong K3, l kha cho vng ba. 56 bit trong kha khi c
th tm c hn tn t 28 = 256 kh nng cho 8 bit kha.
By gi ta s minh ha iu qua v d sau.
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
V d 3.3
Gi s ta c ba cp bn r v bn m, vi cc bn m cng c cc xu x-or c m
ha bi cng mt kha. ngn gn ta s dng h thp lc phn:
Bn r Bn m
748502CD38451097
3874756438451097
03C70306D8A09F10
78560A0960E6D4CB
486911026ACDFF31
375BD31F6ACDFF31
45FA285BE5ADC730
134F7915AC253457
357418DA013FEC86
12549847013FEC86
D8A31B2F28BBC5CF
0F317AC2B23CB944
T cp u tin ta tnh cc xu nhp ca S-hp (cho vng 3) t cc phng trnh (2)
v (3). Chng l:
E = 000000000111111000001110100000000110100000001100
E* = 101111110000001010101100000001010100000001010010
Xu xut x-or ca S-hp c tnh bng phng trnh (1) s l:
C = 10010110010111010101101101100111
T cp th hai, ta tnh c cc xu nhp cho S-hp l:
E = 101000001011111111110100000101010000001011110110
E* = 100010100110101001011110101111110010100010101001
v xu xut x-or ca S-hp l:
C = 10011100100111000001111101010110
T cp th ba, cc xu nhp cho S-hp s l:
E = 111011110001010100000110100011110110100101011111
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
E* = 000001011110100110100010101111110101011000000100
v xu xut x-or ca S-hp l:
C = 11010101011101011101101100101011
Tip theo, ta lp bng cc tr trong tm mng b m cho mi cp. Ta s minh ha th
tc vi cc mng m cho J1 t cp u tin. Trong cp ny, ta c E1= 101111 v C1 =
1001. Tp:
IN1(101111, 1001) = {000000, 000111, 101000, 101111}
Do E1 = 000000 ta c:
J1 test1(000000, 101111, 1001) = {000000, 000111, 101000, 101111}
Do ta tng cc tr 0, 7, 40 v 47 trong cc mng m cho J1.
Cui cng ta s trnh by cc bng. Nu ta xem cc xu bit di 6 nh l biu din
ca cc s nguyn trong khong 0-63, th 64 tr s tng ng vi 0, 1, ..., 63. Cc mng m
s l nh sau:
J1
1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0
0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 3
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
J2
0 0 0 1 0 3 0 0 1 0 0 1 0 0 0 0
0 1 0 0 0 2 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
0 0 1 1 0 0 0 0 1 0 1 0 2 0 0 0
J3
0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0
0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 1
0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
J4
3 1 0 0 0 0 0 0 0 0 2 2 0 0 0 0
0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1
1 1 1 0 1 0 0 0 0 1 1 1 0 0 1 0
0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 1
J5
0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0
0 0 0 0 2 0 0 0 3 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 2 0 0 0 0 0 0 1 0 0 0 0 2 0
J6
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
1 0 0 1 1 0 0 3 0 0 0 0 1 0 0 1
0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0
1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0
J7
0 0 2 1 0 1 0 3 0 0 0 1 1 0 0 0
0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1
0 0 2 0 0 0 2 0 0 0 0 1 2 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
J8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1
0 3 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Trong mi tm mng m, c duy nht mt b m c tr l 3. V tr ca cc b m
xc nh cc bit kha trong J1, ..., J8. Cc v tr l: 47, 5, 19, 0, 24, 7, 7, 49. Chuyn cc
s nguyn sang dng nh phn, ta nhn c J1, ..., J8:
J1 = 101111
J2 = 000101
J3 = 010011
J4 = 000000
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
J5 = 011000
J6 = 000111
J7 = 000111
J8 = 110001
By gi ta c th to ra 48 bit kha, bng cch quan st lch kha cho vng ba. Suy ra
l K c dng:
0001101 0110001 01?01?0 1?00100
0101001 0000??0 111?11? ?100011
vi cc bit kim tra c loi b v ? k hiu bit kha cha bit. Kha y (trong
dng thp lc phn, gm c bit kim tra) s l:
1A624C89520DEC46
II.3.2. Thm m h DES 6-vng
By gi ta s m t vic m rng tng trn cho vic thm m trn h DES 6-vng.
tng y l la chn mt cch cn thn cp bn r vi xu x-or c th v sau xc nh
cc xc sut ca cc dy c th ca cc xu x-or qua cc vng lp m. By gi ta cn nh
ngha mt khi nim quan trng sau.
nh ngha 3.5: Cho n 1 l s nguyn. c trng ca vng th n l mt danh sch cc dng
L0, R0, L1, R1, p1, ..., Ln, Rn, pn
tha mn cc iu kin sau:
1. Li = Ri-1 vi 1 i n
2. Cho 1 i n v Li-1, Ri-1 v L*i-1, R*i-1 l c chn sao cho Li-1 L*i-1 = Li-1 v Ri-1
R*i-1 = Ri-1. Gi s Li, Ri v Li* , Ri* l tnh c nh vic p dng mt vng lp m
DES. Khi xc sut Li L*i = Li v Ri R*i = Ri chnh xc bng pi. (Ch l, xc
sut ny c tnh trn tt c cc b c th c ca J = J1...J8) .
Xc sut c trng c nh ngha bng tch p = p1 ... pn.
Nhn xt: Gi s ta chn L0, R0 v L0*, R0* sao cho L0 L0* = L0 v R0 R0*= R0 v ta
p dng n vng lp m ca DES, nhn c L1. ..., Ln v R1, ..., Rn. Khi ta khng th i
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
hi xc sut Li Li* = Li v Ri Ri* = Ri cho tt c i ( 1 i n) l p1 ... pn. Bi v
cc b -48 trong lch kha K1, ..., Kn khng phi l c lp ln nhau. (Nu n b-48 ny uc
chn c lp mt cch ngu nhin, th iu xc nhn l ng). Nhng ta s coi rng p1 ...
pn chnh xc l xc xut .
Ta cn cn xc nhn l, cc xc sut pi trong c trng l cc cp bn r c xc nh ty
(nhng c nh) c c t bng xu x-or, vi 48 bit kha cho mt vng lp m DES l c
248 kh nng. Do vic thm m s nhm vo vic xc nh kha c nh (nhng cha bit).
Do cn c chn cc bn m ngu nhin (nhng chng c cc xu x-or c c t), hy
vng rng cc xc sut cc xu x-or trong n vng lp m trng hp vi cc xu x-or, c
c t trong c trng, tng i mt p1, ..., pn tng ng.
Trong v d sau y, ta s trnh by c trng vng 1 lm c s cho vic thm m DES ba
vng trong hnh sau (nh trn, ta s s dng cch biu din theo h thp lc phn).
L0 = bt k R0 = 0000000016
L1 = 0000000016 R1 = L0 p = 1
Ta cng s m t mt c trng vng 1 khc nh sau
L0 = 0000000016 R0 = 6000000016
L1 = 6000000016 R1 = 0080820016 p = 14/64
Ta hy xt c trng sau mt cch chi tit hn. Khi f(R0, K1) v f(R0*, K1) c tnh, bc
u tin l m rng R0 v R0*. Xu x-or kt qu ca hai m rng l:
001100...0
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Tc l xu x-or nhp cho S1 l 001100 v cc xu x-or cho by S-hp khc u l 000000.
Cc xu xut x-or cho S2 n S8 u l 0000. Xu xut x-or cho S1 l 1110 vi xc sut 14/64
(do N1(001100, 1110) = 14). Nn ta nhn c:
C = 11100000000000000000000000000000
vi xc sut 14/64. Ap dng P, ta nhn c:
P(C) P(C*) = 00000000100000001000001000000000
trong dng thp lc phn s l 0080820016. Khi xu ny cng x-or vi L0, ta nhn c R1
vi xc sut 14/64. Do L1 = R0.
Vic thm m DES su vng da trn c trng ba vng c cho trong hnh sau.
Trong thm m 6-vng, ta bt u vi L0R0. L0*R0*, L6R6 v L6*R6*, m ta phi chn bn r
sao cho L0= 4008000016 v R.0= 0400000016, ta c th biu din R0 nh sau:
L0
L1
L2
L3
=
=
=
=
4008000016
0400000016
0000000016
0400000016
R0
R1
R2
R3
=
=
=
=
0400000016
0000000016
0400000016
4008000016
p = 1/4
p = 1
p = 1/4
R6 = L5 f(R5, K6)
= R4 f(R5, K6)
= L3 f(R3, K4) f(R5, K6)
R6* cng c th biu din tng t, ta c
R0 = L3 f(R3, K4) f(R3*, K4) f(R5, K6) f(R5*, K6) (4)
( l tng t nh thm m 3-vng)
R6 l c bit. T c trng ta tnh L3 = 0400000016 v R3 = 4008000016 vi xc sut
1/16. Nu nh vy, th xu nhp x-or cho S-hp trong vng 4 c th tnh c nh hm m
rng phi l:
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
001000000000000001010000...0
Cc xu x-or cho S2, S5, S6, S7 v S8 tt c u bng 000000, v v th xu xut x-or l 0000
cho tt c nm S-hp trong vng 4. iu ny c ngha l, ta c th tnh c cc xu xut
x-or cho nm S-hp trong vng 6 nh phng trnh (4). Do gi s ta tnh:
C1C2C3C4C5C6C7C8 = P-1(R6 04000000)
mi Ci l xu bit c di 4. Khi vi xc sut 1/16, th s dn n l C2, C5, C6, C7 v
C8 tng ng l cc xu x-or xut ca S2, S5, S6, S7 v S8 trong vng 6. Cc xu nhp cho
cc S-hp trong vng 6 c th tnh c l E2, E5, E6, E7 v E8; v E2*, E5*, E6*, E7* v E8*,
vi
E1E2E3E4E5E6E7E8 = E(R5) = E(L6)
v
E1*E2*E3*E4*E5*E6*E7*E8* = E(R5*) = E(L6*)
c th tnh c t cc bn r nh sau:
Input: L0R0, L0*R0*, L6R6 v L6*R6*; vi L0 = 4008000016
v R0 = 0400000016.
1. Tnh C = P-1(R6 0400000016)
2. Tnh E = E(L6) v E* = E(L6*)
3. for j {2,5,6,7,8} do
tnh testj( Ej, Ej*, Cj)
Ta cng s xc nh 30 bit kha trong J2, J5, J6, J7 v J8 nh trong thm m 3-vng.
Bi tn, xu xut x-or gi nh cho vng 6 l chnh xc ch vi xc sut 1/16. Cn 15/16
phn cn li ta s thng nhn c nhng xu v dng ngu nhin hn l cc bit kha.
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
nh ngha 3.6: Gi s L0 L0* = L0 v R0 R0*= R0. Ta ni rng, cp bn r L0R0 v L0*
R0* l ng (right) ng vi c trng nu Li Li* = Li v Ri Ri*= Ri cho mi i, 1 i n.
Cp tri vi cp c nh ngha gi l cp sai (wrong).
Ta mong rng, khong 1/16 s cp ca ta l ng, cn cc cp cn li l cp sai ng vi c
trng vng ba ca ta.
Chin lc ca ta l tnh Ej. Ej* v Cjnh m t trn v sau xc nh testj(Ej, Ej*, Cj)
vi j = 2,5,6,7,8. Nu ta bt u vi mt cp ng, th th cc bit kha chnh xc cho mi Jj s
nm trong tp testj. Nu cp l sai, th tr Cj s khng ng, v l nguyn do gi nh
rng, mi tp testj thc cht l ngu nhin.
Ta c th nhn ra cp ng theo phng php sau: Nu testj= 0, vi bt k j {2,5,6,7,8},
khi ta tt yu c c cp ng. By gi cho mt cp sai, ta c th hy vng rng, xc sut
testj= 0 cho mt j c th l xp x 1/5. l l do gi nh l, Nj(Ej, Cj) = testj v
nh nhn xt t trc, xc sut Nj(Ej, Cj) = 0 l xp x 1/5. Xc sut c nm testj
u dng l vo khong 0.85 0.33, qu vy xc sut t nht mt testj bng 0 l vo
khong 0.67. Nn ta c khong 2/3 s cp l sai, nh vo mt nhn xt n gin, c gi l
php lc (filtering operation). T s ca cc cp ng trn cc cp cn li sau php lc l vo
khong:
61311615161
161
V d 3.4: Gi s ta c cp bn r - bn m sau:
Bn r Bn m
86FA1C2B1F51D3BE
C6F21C2B1B51D3BE
1E23ED7F2F553971
296DE2B687AC6340
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Ch l, L0 = 4008000016 v R0 = 0400000016. Xu nhp v xu xut ca S-hp cho vng 6
c tnh nh sau:
j Ej Ej* Cj
2
5
6
7
8
111100
111101
011010
101111
111110
010010
111100
000101
010110
101100
1101
0001
0010
1100
1101
Khi cc tp testj s l nh sau:
j testj
2 14, 15,26, 30, 32, 33, 48, 52
5
6 7, 24, 36, 41, 54, 59
7
8 34, 35, 48, 49
Ta thy rng, hai tp test5 v test7 l rng , nn cp ny l cp sai v n b loi b bng php
lc.
By gi gi s ta c cp sao cho testj> 0 vi j = 2,5,6,7,8 l nhng tp cn li sau php
lc.(Bi v ta khng bit c l cp no ng, cp no sai.) Ta ni rng, xu bit J2J5J6J7J8
di 30 l c xut bi cp nu Jj testj vi j = 2,5,6,7,8. S cc cp c xut l:
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
8,7,6,5,2j
jtest
l bnh thng vi s xu bit c xut l kh ln. (Chng hn. ln hn 80000)
Gi s, ta lp bng cho tt c cc xu c xut nhn c t N cp, m khng b loi bi
php lc. Vi mi cp ng, th xu bit ng J2J5J6J7J8 s l xu c xut. Xu bit ng
s c tnh khong 3N/16 ln. Xu bit sai thng xut hin t hn, bi v chng xut hin
ngu nhin v c khong 230 kh nng. (L mt s rt ln.)
Ta nhn c mt bng cc ln tt c cc xu c xut, nn ta s dng mt thut
tn ch i hi mt khng gian v thi gian t nht. Ta c th m ha bt k mt tp testj no
thnh mt vc t Tj c di 64, vi ta th i ca Tj c t bng 1 (0 i63), nu xu
bit di 6 l biu din ca i trong tp testj; v ta th i c t bng 0 trong trng
hp ngc li ( iu ny ging nh mng cc b m m ta s dng trong thm m DES
ba vng).
Vi mi cp cn li, ta xy dng cc vc t nh trn v gi chng l Tji, j=2,5,6,7,8; 1
i N. Vi I {1, ..., N} ta ni rng I l chp nhn c (allowable) nu vi mi j
{2,5,6,7,8} c t nht mt ta bng I trong vc t
Ii
ijT
Nu cp th i l cp ng cho mi iI, th tp I l chp nhn c. Do ta cho rng
tp chp nhn c c kch thc (xp x) 3N/16, l tp xut v ta hy vng l ch gm cc
bit kha ng ch khng c cc xu khc. iu ny lm n gin ha cho vic xy dng tt
c cc tp chp nhn c I bng mt thut tn qui.
II.3. 3 Cc thm m vi sai khc
Phng php thm m vi sai cn c th p dng thm cc h DES nhiu vng hn.
Vi h DES 8-vng i hi 214 bn r chn v cc h 10-, 12-, 14- v 16-vng i hi c
tng ng 224, 231, 239 v 247 bn m chn. Nn ni chung l kh phc tp.
Cc k thut thm m vi sai c Biham v Shamir pht trin. Cc phng php thm m
DES khc c Matsui s dng nh l thm m tuyn tnh.
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
III. H M DES 3 VNG
Chng trnh gm hai phn:
Phn Giao Din (cha trong th mc GiaoDien): C chc nng x l
giao din.
Phn X L (cha trong th mc XuLy): c chc nng h tr cc hm
x l.
III.1 Giao Din ( Package GiaoDien).
a. Mn hnh chnh (Mainform.vb)
Form lp m v gii m DES(Des.vb)
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Source code mt s hm chnh trong form giai m Des
Imports System.IO
Public Class des Inherits System.Windows.Forms.Form
khai bao bien
Dim str As String
Dim s(7) As DataTable
Dim ip() As String
'Dim iptru() As String
Dim e() As String
Dim p() As String
Dim pc1() As String
Dim pc2() As String
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Dim daykhoa(15) As String
Dim x As String
Dim daynhap(29) As String
Dim daybanma(29) As String
khoi tao
Sub khoitao_s0()
Dim i As Integer
s(0) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(0).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(0).NewRow
s(0).Rows.Add(row)
Next
s(0).Rows(0).Item(0) = 14
s(0).Rows(0).Item(1) = 4
s(0).Rows(0).Item(2) = 13
s(0).Rows(0).Item(3) = 1
s(0).Rows(0).Item(4) = 2
s(0).Rows(0).Item(5) = 15
s(0).Rows(0).Item(6) = 11
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(0).Rows(0).Item(7) = 8
s(0).Rows(0).Item(8) = 3
s(0).Rows(0).Item(9) = 10
s(0).Rows(0).Item(10) = 6
s(0).Rows(0).Item(11) = 12
s(0).Rows(0).Item(12) = 5
s(0).Rows(0).Item(13) = 9
s(0).Rows(0).Item(14) = 0
s(0).Rows(0).Item(15) = 7
s(0).Rows(1).Item(0) = 0
s(0).Rows(1).Item(1) = 15
s(0).Rows(1).Item(2) = 7
s(0).Rows(1).Item(3) = 4
s(0).Rows(1).Item(4) = 14
s(0).Rows(1).Item(5) = 2
s(0).Rows(1).Item(6) = 13
s(0).Rows(1).Item(7) = 1
s(0).Rows(1).Item(8) = 10
s(0).Rows(1).Item(9) = 6
s(0).Rows(1).Item(10) = 12
s(0).Rows(1).Item(11) = 11
s(0).Rows(1).Item(12) = 9
s(0).Rows(1).Item(13) = 5
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(0).Rows(1).Item(14) = 3
s(0).Rows(1).Item(15) = 8
s(0).Rows(2).Item(0) = 4
s(0).Rows(2).Item(1) = 1
s(0).Rows(2).Item(2) = 14
s(0).Rows(2).Item(3) = 8
s(0).Rows(2).Item(4) = 13
s(0).Rows(2).Item(5) = 6
s(0).Rows(2).Item(6) = 2
s(0).Rows(2).Item(7) = 11
s(0).Rows(2).Item(8) = 15
s(0).Rows(2).Item(9) = 12
s(0).Rows(2).Item(10) = 9
s(0).Rows(2).Item(11) = 7
s(0).Rows(2).Item(12) = 3
s(0).Rows(2).Item(13) = 10
s(0).Rows(2).Item(14) = 5
s(0).Rows(2).Item(15) = 0
s(0).Rows(3).Item(0) = 15
s(0).Rows(3).Item(1) = 12
s(0).Rows(3).Item(2) = 8
s(0).Rows(3).Item(3) = 2
s(0).Rows(3).Item(4) = 4
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(0).Rows(3).Item(5) = 9
s(0).Rows(3).Item(6) = 1
s(0).Rows(3).Item(7) = 7
s(0).Rows(3).Item(8) = 5
s(0).Rows(3).Item(9) = 11
s(0).Rows(3).Item(10) = 3
s(0).Rows(3).Item(11) = 14
s(0).Rows(3).Item(12) = 10
s(0).Rows(3).Item(13) = 0
s(0).Rows(3).Item(14) = 6
s(0).Rows(3).Item(15) = 13
dgs0.DataSource = s(0)
End Sub
Ham khoi tao s1
Sub khoitao_s1()
Dim i As Integer
s(1) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(1).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(1).NewRow
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(1).Rows.Add(row)
Next
s(1).Rows(0).Item(0) = 15
s(1).Rows(0).Item(1) = 1
s(1).Rows(0).Item(2) = 8
s(1).Rows(0).Item(3) = 14
s(1).Rows(0).Item(4) = 6
s(1).Rows(0).Item(5) = 11
s(1).Rows(0).Item(6) = 3
s(1).Rows(0).Item(7) = 4
s(1).Rows(0).Item(8) = 9
s(1).Rows(0).Item(9) = 7
s(1).Rows(0).Item(10) = 2
s(1).Rows(0).Item(11) = 13
s(1).Rows(0).Item(12) = 12
s(1).Rows(0).Item(13) = 0
s(1).Rows(0).Item(14) = 5
s(1).Rows(0).Item(15) = 10
s(1).Rows(1).Item(0) = 3
s(1).Rows(1).Item(1) = 13
s(1).Rows(1).Item(2) = 4
s(1).Rows(1).Item(3) = 7
s(1).Rows(1).Item(4) = 15
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(1).Rows(1).Item(5) = 2
s(1).Rows(1).Item(6) = 8
s(1).Rows(1).Item(7) = 14
s(1).Rows(1).Item(8) = 12
s(1).Rows(1).Item(9) = 0
s(1).Rows(1).Item(10) = 1
s(1).Rows(1).Item(11) = 10
s(1).Rows(1).Item(12) = 6
s(1).Rows(1).Item(13) = 9
s(1).Rows(1).Item(14) = 11
s(1).Rows(1).Item(15) = 5
s(1).Rows(2).Item(0) = 0
s(1).Rows(2).Item(1) = 14
s(1).Rows(2).Item(2) = 7
s(1).Rows(2).Item(3) = 11
s(1).Rows(2).Item(4) = 10
s(1).Rows(2).Item(5) = 4
s(1).Rows(2).Item(6) = 13
s(1).Rows(2).Item(7) = 1
s(1).Rows(2).Item(8) = 5
s(1).Rows(2).Item(9) = 8
s(1).Rows(2).Item(10) = 12
s(1).Rows(2).Item(11) = 6
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(1).Rows(2).Item(12) = 9
s(1).Rows(2).Item(13) = 3
s(1).Rows(2).Item(14) = 2
s(1).Rows(2).Item(15) = 15
s(1).Rows(3).Item(0) = 13
s(1).Rows(3).Item(1) = 8
s(1).Rows(3).Item(2) = 10
s(1).Rows(3).Item(3) = 1
s(1).Rows(3).Item(4) = 3
s(1).Rows(3).Item(5) = 15
s(1).Rows(3).Item(6) = 4
s(1).Rows(3).Item(7) = 2
s(1).Rows(3).Item(8) = 11
s(1).Rows(3).Item(9) = 6
s(1).Rows(3).Item(10) = 7
s(1).Rows(3).Item(11) = 12
s(1).Rows(3).Item(12) = 0
s(1).Rows(3).Item(13) = 5
s(1).Rows(3).Item(14) = 14
s(1).Rows(3).Item(15) = 9
dgs1.DataSource = s(1)
End Sub
Ham khoi tao s2
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Sub khoitao_s2()
Dim i As Integer
s(2) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(2).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(2).NewRow
s(2).Rows.Add(row)
Next
s(2).Rows(0).Item(0) = 10
s(2).Rows(0).Item(1) = 0
s(2).Rows(0).Item(2) = 9
s(2).Rows(0).Item(3) = 14
s(2).Rows(0).Item(4) = 6
s(2).Rows(0).Item(5) = 3
s(2).Rows(0).Item(6) = 15
s(2).Rows(0).Item(7) = 5
s(2).Rows(0).Item(8) = 1
s(2).Rows(0).Item(9) = 13
s(2).Rows(0).Item(10) = 12
s(2).Rows(0).Item(11) = 7
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(2).Rows(0).Item(12) = 11
s(2).Rows(0).Item(13) = 4
s(2).Rows(0).Item(14) = 2
s(2).Rows(0).Item(15) = 8
s(2).Rows(1).Item(0) = 13
s(2).Rows(1).Item(1) = 7
s(2).Rows(1).Item(2) = 0
s(2).Rows(1).Item(3) = 9
s(2).Rows(1).Item(4) = 3
s(2).Rows(1).Item(5) = 4
s(2).Rows(1).Item(6) = 6
s(2).Rows(1).Item(7) = 10
s(2).Rows(1).Item(8) = 2
s(2).Rows(1).Item(9) = 8
s(2).Rows(1).Item(10) = 5
s(2).Rows(1).Item(11) = 14
s(2).Rows(1).Item(12) = 12
s(2).Rows(1).Item(13) = 11
s(2).Rows(1).Item(14) = 15
s(2).Rows(1).Item(15) = 1
s(2).Rows(2).Item(0) = 13
s(2).Rows(2).Item(1) = 6
s(2).Rows(2).Item(2) = 4
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(2).Rows(2).Item(3) = 9
s(2).Rows(2).Item(4) = 8
s(2).Rows(2).Item(5) = 15
s(2).Rows(2).Item(6) = 3
s(2).Rows(2).Item(7) = 0
s(2).Rows(2).Item(8) = 11
s(2).Rows(2).Item(9) = 1
s(2).Rows(2).Item(10) = 2
s(2).Rows(2).Item(11) = 12
s(2).Rows(2).Item(12) = 5
s(2).Rows(2).Item(13) = 10
s(2).Rows(2).Item(14) = 14
s(2).Rows(2).Item(15) = 7
s(2).Rows(3).Item(0) = 1
s(2).Rows(3).Item(1) = 10
s(2).Rows(3).Item(2) = 13
s(2).Rows(3).Item(3) = 0
s(2).Rows(3).Item(4) = 6
s(2).Rows(3).Item(5) = 9
s(2).Rows(3).Item(6) = 8
s(2).Rows(3).Item(7) = 7
s(2).Rows(3).Item(8) = 4
s(2).Rows(3).Item(9) = 15
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(2).Rows(3).Item(10) = 14
s(2).Rows(3).Item(11) = 3
s(2).Rows(3).Item(12) = 11
s(2).Rows(3).Item(13) = 5
s(2).Rows(3).Item(14) = 3
s(2).Rows(3).Item(15) = 12
dgs2.DataSource = s(2)
End Sub
Hm khi to s3
Sub khoitao_s3()
Dim i As Integer
s(3) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(3).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(3).NewRow
s(3).Rows.Add(row)
Next
s(3).Rows(0).Item(0) = 7
s(3).Rows(0).Item(1) = 13
s(3).Rows(0).Item(2) = 14
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(3).Rows(0).Item(3) = 3
s(3).Rows(0).Item(4) = 0
s(3).Rows(0).Item(5) = 6
s(3).Rows(0).Item(6) = 9
s(3).Rows(0).Item(7) = 10
s(3).Rows(0).Item(8) = 1
s(3).Rows(0).Item(9) = 2
s(3).Rows(0).Item(10) = 8
s(3).Rows(0).Item(11) = 5
s(3).Rows(0).Item(12) = 11
s(3).Rows(0).Item(13) = 12
s(3).Rows(0).Item(14) = 4
s(3).Rows(0).Item(15) = 15
s(3).Rows(1).Item(0) = 13
s(3).Rows(1).Item(1) = 8
s(3).Rows(1).Item(2) = 11
s(3).Rows(1).Item(3) = 5
s(3).Rows(1).Item(4) = 6
s(3).Rows(1).Item(5) = 15
s(3).Rows(1).Item(6) = 0
s(3).Rows(1).Item(7) = 3
s(3).Rows(1).Item(8) = 4
s(3).Rows(1).Item(9) = 7
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(3).Rows(1).Item(10) = 2
s(3).Rows(1).Item(11) = 12
s(3).Rows(1).Item(12) = 1
s(3).Rows(1).Item(13) = 10
s(3).Rows(1).Item(14) = 14
s(3).Rows(1).Item(15) = 9
s(3).Rows(2).Item(0) = 10
s(3).Rows(2).Item(1) = 6
s(3).Rows(2).Item(2) = 9
s(3).Rows(2).Item(3) = 0
s(3).Rows(2).Item(4) = 12
s(3).Rows(2).Item(5) = 11
s(3).Rows(2).Item(6) = 7
s(3).Rows(2).Item(7) = 13
s(3).Rows(2).Item(8) = 15
s(3).Rows(2).Item(9) = 1
s(3).Rows(2).Item(10) = 3
s(3).Rows(2).Item(11) = 14
s(3).Rows(2).Item(12) = 5
s(3).Rows(2).Item(13) = 2
s(3).Rows(2).Item(14) = 8
s(3).Rows(2).Item(15) = 4
s(3).Rows(3).Item(0) = 3
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(3).Rows(3).Item(1) = 15
s(3).Rows(3).Item(2) = 0
s(3).Rows(3).Item(3) = 6
s(3).Rows(3).Item(4) = 10
s(3).Rows(3).Item(5) = 1
s(3).Rows(3).Item(6) = 13
s(3).Rows(3).Item(7) = 8
s(3).Rows(3).Item(8) = 9
s(3).Rows(3).Item(9) = 4
s(3).Rows(3).Item(10) = 5
s(3).Rows(3).Item(11) = 11
s(3).Rows(3).Item(12) = 12
s(3).Rows(3).Item(13) = 7
s(3).Rows(3).Item(14) = 2
s(3).Rows(3).Item(15) = 14
dgs3.DataSource = s(3)
End Sub
Hm khi to s4
Sub khoitao_s4()
Dim i As Integer
s(4) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(4).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(4).NewRow
s(4).Rows.Add(row)
Next
s(4).Rows(0).Item(0) = 2
s(4).Rows(0).Item(1) = 12
s(4).Rows(0).Item(2) = 4
s(4).Rows(0).Item(3) = 1
s(4).Rows(0).Item(4) = 7
s(4).Rows(0).Item(5) = 10
s(4).Rows(0).Item(6) = 11
s(4).Rows(0).Item(7) = 6
s(4).Rows(0).Item(8) = 8
s(4).Rows(0).Item(9) = 5
s(4).Rows(0).Item(10) = 3
s(4).Rows(0).Item(11) = 15
s(4).Rows(0).Item(12) = 13
s(4).Rows(0).Item(13) = 0
s(4).Rows(0).Item(14) = 14
s(4).Rows(0).Item(15) = 9
s(4).Rows(1).Item(0) = 14
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(4).Rows(1).Item(1) = 11
s(4).Rows(1).Item(2) = 2
s(4).Rows(1).Item(3) = 12
s(4).Rows(1).Item(4) = 4
s(4).Rows(1).Item(5) = 7
s(4).Rows(1).Item(6) = 13
s(4).Rows(1).Item(7) = 1
s(4).Rows(1).Item(8) = 5
s(4).Rows(1).Item(9) = 0
s(4).Rows(1).Item(10) = 15
s(4).Rows(1).Item(11) = 10
s(4).Rows(1).Item(12) = 3
s(4).Rows(1).Item(13) = 9
s(4).Rows(1).Item(14) = 8
s(4).Rows(1).Item(15) = 6
s(4).Rows(2).Item(0) = 4
s(4).Rows(2).Item(1) = 2
s(4).Rows(2).Item(2) = 1
s(4).Rows(2).Item(3) = 11
s(4).Rows(2).Item(4) = 10
s(4).Rows(2).Item(5) = 13
s(4).Rows(2).Item(6) = 7
s(4).Rows(2).Item(7) = 8
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(4).Rows(2).Item(8) = 15
s(4).Rows(2).Item(9) = 9
s(4).Rows(2).Item(10) = 12
s(4).Rows(2).Item(11) = 5
s(4).Rows(2).Item(12) = 6
s(4).Rows(2).Item(13) = 3
s(4).Rows(2).Item(14) = 0
s(4).Rows(2).Item(15) = 14
s(4).Rows(3).Item(0) = 11
s(4).Rows(3).Item(1) = 8
s(4).Rows(3).Item(2) = 12
s(4).Rows(3).Item(3) = 7
s(4).Rows(3).Item(4) = 0
s(4).Rows(3).Item(5) = 14
s(4).Rows(3).Item(6) = 2
s(4).Rows(3).Item(7) = 13
s(4).Rows(3).Item(8) = 6
s(4).Rows(3).Item(9) = 15
s(4).Rows(3).Item(10) = 0
s(4).Rows(3).Item(11) = 9
s(4).Rows(3).Item(12) = 10
s(4).Rows(3).Item(13) = 4
s(4).Rows(3).Item(14) = 5
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(4).Rows(3).Item(15) = 3
dgs4.DataSource = s(4)
End Sub
Hm khi to S5
Sub khoitao_s5()
Dim i As Integer
s(5) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(5).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(5).NewRow
s(5).Rows.Add(row)
Next
s(5).Rows(0).Item(0) = 12
s(5).Rows(0).Item(1) = 1
s(5).Rows(0).Item(2) = 10
s(5).Rows(0).Item(3) = 15
s(5).Rows(0).Item(4) = 9
s(5).Rows(0).Item(5) = 2
s(5).Rows(0).Item(6) = 6
s(5).Rows(0).Item(7) = 8
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(5).Rows(0).Item(8) = 0
s(5).Rows(0).Item(9) = 13
s(5).Rows(0).Item(10) = 3
s(5).Rows(0).Item(11) = 4
s(5).Rows(0).Item(12) = 14
s(5).Rows(0).Item(13) = 7
s(5).Rows(0).Item(14) = 5
s(5).Rows(0).Item(15) = 11
s(5).Rows(1).Item(0) = 10
s(5).Rows(1).Item(1) = 15
s(5).Rows(1).Item(2) = 4
s(5).Rows(1).Item(3) = 2
s(5).Rows(1).Item(4) = 7
s(5).Rows(1).Item(5) = 12
s(5).Rows(1).Item(6) = 9
s(5).Rows(1).Item(7) = 5
s(5).Rows(1).Item(8) = 6
s(5).Rows(1).Item(9) = 1
s(5).Rows(1).Item(10) = 13
s(5).Rows(1).Item(11) = 14
s(5).Rows(1).Item(12) = 0
s(5).Rows(1).Item(13) = 11
s(5).Rows(1).Item(14) = 3
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(5).Rows(1).Item(15) = 8
s(5).Rows(2).Item(0) = 9
s(5).Rows(2).Item(1) = 14
s(5).Rows(2).Item(2) = 15
s(5).Rows(2).Item(3) = 5
s(5).Rows(2).Item(4) = 2
s(5).Rows(2).Item(5) = 8
s(5).Rows(2).Item(6) = 12
s(5).Rows(2).Item(7) = 3
s(5).Rows(2).Item(8) = 7
s(5).Rows(2).Item(9) = 0
s(5).Rows(2).Item(10) = 4
s(5).Rows(2).Item(11) = 10
s(5).Rows(2).Item(12) = 1
s(5).Rows(2).Item(13) = 13
s(5).Rows(2).Item(14) = 11
s(5).Rows(2).Item(15) = 6
s(5).Rows(3).Item(0) = 4
s(5).Rows(3).Item(1) = 3
s(5).Rows(3).Item(2) = 2
s(5).Rows(3).Item(3) = 12
s(5).Rows(3).Item(4) = 9
s(5).Rows(3).Item(5) = 5
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(5).Rows(3).Item(6) = 15
s(5).Rows(3).Item(7) = 10
s(5).Rows(3).Item(8) = 11
s(5).Rows(3).Item(9) = 14
s(5).Rows(3).Item(10) = 1
s(5).Rows(3).Item(11) = 7
s(5).Rows(3).Item(12) = 6
s(5).Rows(3).Item(13) = 0
s(5).Rows(3).Item(14) = 8
s(5).Rows(3).Item(15) = 13
dgs5.DataSource = s(5)
End Sub
Hm khi to S6
Sub khoitao_s6()
Dim i As Integer
s(6) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(6).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(6).NewRow
s(6).Rows.Add(row)
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Next
s(6).Rows(0).Item(0) = 4
s(6).Rows(0).Item(1) = 11
s(6).Rows(0).Item(2) = 2
s(6).Rows(0).Item(3) = 14
s(6).Rows(0).Item(4) = 15
s(6).Rows(0).Item(5) = 0
s(6).Rows(0).Item(6) = 8
s(6).Rows(0).Item(7) = 13
s(6).Rows(0).Item(8) = 3
s(6).Rows(0).Item(9) = 12
s(6).Rows(0).Item(10) = 9
s(6).Rows(0).Item(11) = 7
s(6).Rows(0).Item(12) = 5
s(6).Rows(0).Item(13) = 10
s(6).Rows(0).Item(14) = 6
s(6).Rows(0).Item(15) = 1
s(6).Rows(1).Item(0) = 13
s(6).Rows(1).Item(1) = 0
s(6).Rows(1).Item(2) = 11
s(6).Rows(1).Item(3) = 7
s(6).Rows(1).Item(4) = 4
s(6).Rows(1).Item(5) = 9
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(6).Rows(1).Item(6) = 1
s(6).Rows(1).Item(7) = 10
s(6).Rows(1).Item(8) = 14
s(6).Rows(1).Item(9) = 3
s(6).Rows(1).Item(10) = 5
s(6).Rows(1).Item(11) = 12
s(6).Rows(1).Item(12) = 2
s(6).Rows(1).Item(13) = 15
s(6).Rows(1).Item(14) = 8
s(6).Rows(1).Item(15) = 6
s(6).Rows(2).Item(0) = 1
s(6).Rows(2).Item(1) = 4
s(6).Rows(2).Item(2) = 11
s(6).Rows(2).Item(3) = 13
s(6).Rows(2).Item(4) = 12
s(6).Rows(2).Item(5) = 3
s(6).Rows(2).Item(6) = 7
s(6).Rows(2).Item(7) = 14
s(6).Rows(2).Item(8) = 10
s(6).Rows(2).Item(9) = 15
s(6).Rows(2).Item(10) = 6
s(6).Rows(2).Item(11) = 8
s(6).Rows(2).Item(12) = 0
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(6).Rows(2).Item(13) = 5
s(6).Rows(2).Item(14) = 9
s(6).Rows(2).Item(15) = 2
s(6).Rows(3).Item(0) = 6
s(6).Rows(3).Item(1) = 11
s(6).Rows(3).Item(2) = 13
s(6).Rows(3).Item(3) = 8
s(6).Rows(3).Item(4) = 1
s(6).Rows(3).Item(5) = 4
s(6).Rows(3).Item(6) = 10
s(6).Rows(3).Item(7) = 7
s(6).Rows(3).Item(8) = 9
s(6).Rows(3).Item(9) = 5
s(6).Rows(3).Item(10) = 0
s(6).Rows(3).Item(11) = 15
s(6).Rows(3).Item(12) = 14
s(6).Rows(3).Item(13) = 2
s(6).Rows(3).Item(14) = 3
s(6).Rows(3).Item(15) = 12
dgs6.DataSource = s(6)
End Sub
Hm khi to S7
Sub khoitao_s7()
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Dim i As Integer
s(7) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(7).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(7).NewRow
s(7).Rows.Add(row)
Next
s(7).Rows(0).Item(0) = 13
s(7).Rows(0).Item(1) = 2
s(7).Rows(0).Item(2) = 8
s(7).Rows(0).Item(3) = 4
s(7).Rows(0).Item(4) = 6
s(7).Rows(0).Item(5) = 15
s(7).Rows(0).Item(6) = 11
s(7).Rows(0).Item(7) = 1
s(7).Rows(0).Item(8) = 10
s(7).Rows(0).Item(9) = 9
s(7).Rows(0).Item(10) = 3
s(7).Rows(0).Item(11) = 14
s(7).Rows(0).Item(12) = 5
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(7).Rows(0).Item(13) = 0
s(7).Rows(0).Item(14) = 12
s(7).Rows(0).Item(15) = 7
s(7).Rows(1).Item(0) = 1
s(7).Rows(1).Item(1) = 15
s(7).Rows(1).Item(2) = 13
s(7).Rows(1).Item(3) = 8
s(7).Rows(1).Item(4) = 10
s(7).Rows(1).Item(5) = 3
s(7).Rows(1).Item(6) = 7
s(7).Rows(1).Item(7) = 4
s(7).Rows(1).Item(8) = 12
s(7).Rows(1).Item(9) = 5
s(7).Rows(1).Item(10) = 6
s(7).Rows(1).Item(11) = 11
s(7).Rows(1).Item(12) = 0
s(7).Rows(1).Item(13) = 14
s(7).Rows(1).Item(14) = 9
s(7).Rows(1).Item(15) = 2
s(7).Rows(2).Item(0) = 7
s(7).Rows(2).Item(1) = 11
s(7).Rows(2).Item(2) = 4
s(7).Rows(2).Item(3) = 1
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(7).Rows(2).Item(4) = 9
s(7).Rows(2).Item(5) = 12
s(7).Rows(2).Item(6) = 14
s(7).Rows(2).Item(7) = 2
s(7).Rows(2).Item(8) = 0
s(7).Rows(2).Item(9) = 6
s(7).Rows(2).Item(10) = 10
s(7).Rows(2).Item(11) = 13
s(7).Rows(2).Item(12) = 15
s(7).Rows(2).Item(13) = 3
s(7).Rows(2).Item(14) = 5
s(7).Rows(2).Item(15) = 8
s(7).Rows(3).Item(0) = 2
s(7).Rows(3).Item(1) = 1
s(7).Rows(3).Item(2) = 14
s(7).Rows(3).Item(3) = 7
s(7).Rows(3).Item(4) = 4
s(7).Rows(3).Item(5) = 10
s(7).Rows(3).Item(6) = 8
s(7).Rows(3).Item(7) = 13
s(7).Rows(3).Item(8) = 15
s(7).Rows(3).Item(9) = 12
s(7).Rows(3).Item(10) = 9
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
s(7).Rows(3).Item(11) = 0
s(7).Rows(3).Item(12) = 3
s(7).Rows(3).Item(13) = 5
s(7).Rows(3).Item(14) = 6
s(7).Rows(3).Item(15) = 11
dgs7.DataSource = s(7)
End Sub
Khi to gi tr bin
Sub khoitao()
ip = txtip.Text.Split(" ", ";", ":", ".")
'iptru = txtiptru.Text.Split(" ", " ", ";", ":", ".")
e = txte.Text.Split(" ", ";", ":", ".")
p = txtp.Text.Split(" ", ";", ":", ".")
pc1 = txtpc1.Text.Split(" ", ";", ":", ".")
pc2 = txtpc2.Text.Split(" ", ";", ":", ".")
khoitao_s0()
khoitao_s1()
khoitao_s2()
khoitao_s3()
khoitao_s4()
khoitao_s5()
khoitao_s6()
khoitao_s7()
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
End Sub
Ct bit cui
Function catbitcuoi(ByVal k As String) As String 'dua vao 64 bit tra ra 56 bit
Dim i As Integer = 0
Dim j As Integer
Dim tam As String
While i < 63
For j = i To i + 6
tam += k.Substring(j, 1)
Next
i = i + 8
End While
Return tam
End Function
Function hvpc1(ByVal k As String) As String
Dim tam(63) As Char
Dim i As Integer
For i = 0 To 63
tam(i) = k.Substring(i, 1)
Next
tam = catbitcuoi(tam)
For i = 0 To 55
tam(i) = k.Substring(Integer.Parse(pc1(i) - 1), 1)
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Next
Return tam
End Function
H v pc2
Function hvpc2(ByVal str As String) As String
Dim tam(47) As Char
Dim i As Integer
For i = 0 To 47
tam(i) = str.Substring(Integer.Parse(pc2(i) - 1), 1)
Next
Return tam
End Function
Function ls(ByVal s As String, ByVal n As Integer) As String
Return s.Substring(n, s.Length - n) + s.Substring(0, n)
End Function
Hm to dy kh
Sub taodaykhoa()
Dim khoa as String =
"00010011001101000101011101111001100110111011110011011111111
10001"
Dim khoa As String = txtkhoak.Text
Dim j As Integer
If khoa.Length > 8 Then
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
khoa = txtkhoak.Text.Remove(8, khoa.Length - 8)
txtkhoak.Text = khoa
End If
Dim tam As String
For j = 0 To khoa.Length - 1
tam += bi_acsii(Asc(khoa.Substring(j, 1)))
Next
khoa = tam
Dim khoa1 As String = hvpc1(khoa)
Dim d(16) As String
Dim c(16) As String
c(0) = khoa1.Substring(0, 28)
c(0) = ls(c(0), 1)
d(0) = khoa1.Substring(28, 28)
d(0) = ls(d(0), 1)
daykhoa(0) = hvpc2(c(0) + d(0))
txtdaykhoa.Text += daykhoa(0) + Chr(9)
Dim i As Integer
For i = 1 To 15
If i = 2 - 1 Or i = 9 - 1 Or i = 16 - 1 Then
c(i) = ls(c(i - 1), 1)
d(i) = ls(d(i - 1), 1)
Else
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
c(i) = ls(c(i - 1), 2)
d(i) = ls(d(i - 1), 2)
End If
daykhoa(i) = hvpc2(c(i) + d(i))
txtdaykhoa.Text += daykhoa(i) + Chr(9)
Next i
End Sub
Mt s hm x l chui nhp
Nhp nh phn
Sub binarynhap()
x = txtchuoinhap.Text
Dim y As String
Dim i As Integer
Dim j As Integer
Dim sokitudu As Integer = x.Length Mod 8
If sokitudu > 0 Then
Dim sokituthem As Integer = 8 - sokitudu
For i = 1 To sokituthem
x += " "
Next
End If
Dim sodaynhap As Integer = x.Length \ 8
ReDim daynhap(sodaynhap - 1)
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
For i = 0 To sodaynhap - 1
daynhap(i) = x.Substring(i * 8, 8)
y = ""
For j = 0 To daynhap(i).Length - 1
y += bi_acsii(Asc(daynhap(i).Substring(j, 1)))
Next
daynhap(i) = y
Next
End Sub
Function bi_acsii(ByVal int As Integer) As String
Dim tam(7) As Char
Dim i As Integer
For i = 0 To 7
tam(i) = (int Mod 2).ToString
int \= 2
Next
Array.Reverse(tam)
Return tam
End Function
Mt s hm m h
Hm hn v ip
Function hvip(ByVal x As String) As String
Dim tam(63) As Char
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Dim i As Integer
For i = 0 To 63
tam(i) = x.Substring(ip(i) - 1, 1)
Next
Return tam
End Function
Hm hn v e
Function hve(ByVal r As String) As String
Dim tam(47) As Char
Dim i As Integer
For i = 0 To 47
tam(i) = r.Substring(e(i) - 1, 1)
Next
Return tam
End Function
Function hvp(ByVal c As String) As String
Dim tam(31) As Char
Dim i As Integer
For i = 0 To 31
tam(i) = c.Substring(p(i) - 1, 1)
Next
Return tam
End Function
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Hm hn v ip tr
Function hviptru(ByVal c As String) As String
Dim tam(63) As Char
Dim i As Integer
For i = 0 To 63
tam(ip(i) - 1) = c.Substring(i, 1)
Next
Return tam
End Function
M h
Function mahoa() As String
binarynhap()
Dim k As Integer
Dim y As String
For k = 0 To daynhap.Length - 1
'x +=
"0000000100100011010001010110011110001001101010101100110111101111"
x = daynhap(k)
Dim x0 As String = hvip(x)
Dim l(15) As String
Dim r(15) As String
Dim i, j As Integer
Dim l0 As String = x0.Substring(0, 32)
N BO MT THNG TIN H M DES
NG TH TUYT H T012825
Dim r0 As String = x0.Substring(32, 32)
l(0) = r0
For i = 0 To 31
r(0) += (l0.Substring(i, 1) Xor f(r0, d