You are on page 1of 111

O AN BAO MAT THONG TIN

HE MA DES

MC LC
I .1 Gii thiu .......................................................................................................2
I.2 Cc H M Thng Dng:...................................................................................3
e. Phng php Affine......................................................................................4
f. Phng php Vigenere.........................................................................................5
I.2 LP M DES..................................................................................................12
I. 3 THM M DES.............................................................................................15
I.3.1. Thm m h DES - 3 vng.......................................................................18
II.3.2. Thm m h DES 6-vng........................................................................21
II.3. 3 Cc thm m vi sai khc........................................................................25
III. H M DES 3 VNG ...................................................................................25
III.1 Giao Din ( Package GiaoDien)....................................................................25

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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 khon, 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 khon 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.

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 kho. tp hp hu hn cc kha c th c s dng
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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 d k ( ek ( 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.
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
11 13=143. Do 143 15 (mod 16) nn 11 13=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 hon 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, a b Zm
7. Tnh giao hon ca php cng trong Zm, i.e., a, b Zm, a b=b a
8. Tnh kt hp ca php cng trong Zm, i.e., a, b, c Zm, (a b) c =a (b c)
9. Zm c phn t n v l 1, i.e., a Zm, a 1=1 a=a
10.Tnh phn phi ca php nhn i vi php cng, i.e., a, b, c Zm, (a+b) c =(a c)
+(b c)
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
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

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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 hon v c th c ca 26 k hiu 0,...,25.
Vi mi hon v K, ta nh ngha:
e (x) = (x)
v nh ngha
d (y) = -1(y)
-1
vi l hon v ngc ca hon 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 ton 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+b y (mod 26) phi c nghim
duy nht xZ26.
Phng trnh ax+b y (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+b y (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.
m

e
nh l 1.2: Nu n = pi i vi pi l cc s nguyn t khc nhau v ei Z+, 1 i m th
m

( n ) = piei piei 1
i =1

i =1

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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
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 m m kh nghch
k1,1 k1, 2 k1,m

k 2,m
k 2,1
K , nh ngha:
Vi mi kha k =

k
m, 2
m ,m
m ,1
k1,1

k 2,1
ek ( x ) = xk = ( x1 , x 2 ,..., x m )

k
m ,1

k1, 2

k m,2

k1,m

k 2 ,m
vi x=(x1, x2, ..., xm) P

k m,m

v dk(y) = yk1 vi y C
Mi php ton s hc u c thc hin trn Zn

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

h. M hon 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 hon 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 .
Phng php m ha m hon v
Chn s nguyn dng m. nh ngha:
P = C = (Z26)m v K l tp hp cc hon v ca m phn t {1, 2, ..., m}
Vi mi kha K, nh ngha:
e ( x1 , x 2 ,..., x m ) = x ( 1) , x ( 2 ) ,... x ( m ) v
d ( y1 , y 2 ,..., y m ) = y 1 (1) , y 1 ( 2 ) ,... y 1 ( m )

vi

hon v ngc ca

Phng php m hon v chnh l mt trng hp c bit ca phng php Hill. Vi mi


hon v ca tp hp {1, 2, ..., m} , ta xc nh ma trn k = (ki, j ) theo cng thc sau:

1, n ei = ( uj )
ki, j =
0, t r ot nr g h n ng pgla i c

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 hon 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 hon ton tng ng vi m ha bng phng php m
hon v vi hon 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:
y = y1 y 2 ... = e z1 ( x1 )e z2 ( x 2 )...
I.3 Quy trnh thm m:
C mi phng php m ho 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 ho. Ngoi 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 ton ca n ph thuc vo cc yu t :
Khng gian kho 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 ton cao.
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

bo mt cho vic truyn kha cng cn c x l mt cch nghim tc.


V mt h m ho 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 hon v. vi php trn thch hp th
vic gii m n li l mt bi ton 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 ton 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 hon
v cc bit trong t x theo mt hon 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

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 ton 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 hon v cc bit
trong kha K cho trc).

i- 1

i- 1

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Hnh.2 Quy trnh pht sinh dy 64 bit LiRi t dy 64 bit Li-1Ri-1v kha Ki

3. p dng hon v ngc IP-1 i vi dy bit R16L16, thu c t y gm 64 bit. Nh vy, y


= IP-1 (R16L16)

Hm f c s dng bc 2 l
A

E(A)

B1

B2

B3

B4

B5

B6

B7 B8

CS7 C8S
S1 C1 S2C2 SC33 C4S4 C5 SC
56
6
7

NGO TH TUYET HA T012825

f(A,J)

S8

O AN BAO MAT THONG TIN

HE MA DES

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 hon 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).
Thc hin php ton 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 4 16 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 hon 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.
Hon v khi to IP s nh sau:
IP
58
60
62
64
57
59
61
63

50
52
54
56
49
51
53
55

42
44
46
48
41
43
45
47

34
36
38
40
33
35
37
39

26
28
30
32
25
27
29
31

18
20
22
24
17
19
21
23

10
12
14
16
9
11
13
15

2
4
6
8
1
3
5
7

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.
Hon v ngc IP-1 s l:
40
39
38
37
36
35
34
33

8
7
6
5
4
3
2
1

48
47
46
45
44
43
42
41

IP-1
16
15
14
13
12
11
10
9

Hm m rng E c c t theo bng sau:

NGO TH TUYET HA T012825

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

O AN BAO MAT THONG TIN

32
4
8
12
16
20
24
28

1
5
9
13
17
21
25
29

HE MA DES

E bng chn bit


3
4
7
8
11
12
15
16
19
20
23
24
27
28
31
32

2
6
10
14
18
22
26
30

5
9
13
17
21
25
29
1

Tm S-hp v hon 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

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

10
13
13
1

0
7
6
10

9
0
4
13

14
9
9
0

6
3
8
6

3
4
15
9

15
6
3
8

5
10
0
7

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

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

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

1
2
11
4

13
8
1
15

12
5
2
14

7
14
12
3

11
12
5
11

4
11
10
5

2
15
14
2

8
1
7
12

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

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

S2

S3

S4

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
S6

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN


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

HE MA DES
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

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

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

S7
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

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

S8

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

K
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 PC-1
c b qua khi tnh lch kha.
1. Cho kha 64 bit K, loi b cc bit kim tra v hon v cc bit cn li ca K tng
ng vi hon v (c nh) PC-1. Ta vit PC-1(K) = C0D0, vi C0 bao gm 28 bit u tin ca
0
PC-1(K) v DC0 0l 28 bit cn D
li.
2. Vi i nm trong khong t 1 n 16, ta tnh
Ci = LSi(Ci-1)
LS1
LS1
Di = LSi(D
i-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
C1
K1
trong nhng trng
hp cnDli.
hon v c nh khc.
1 PC-2 l mtPC-2
Vic tnh lch kha c minh ha nh hnh v sau:
LS2
LS
2

...
LS16

LS16

NGO TH TUYET HA T012825

C16

D16

PC-2

K16

O AN BAO MAT THONG TIN

HE MA DES

Cc hon v PC-1 v PC-2 c s dng trong vic tnh lch kha l nh sau:
57
1
10
19
63
7
14
21

49
58
2
11
55
62
6
13

PC-1
33
25
42
34
51
43
60
52
39
31
46
38
53
45
28
20

41
50
59
34
7
54
61
5

17
26
35
44
23
30
37
12

9
18
27
36
15
22
29
4

PC-2
14
3
23
16
41
30
44
46

17
28
19
7
50
40
49
42

11
15
12
27
31
51
39
50

24
6
4
20
37
45
56
36

1
21
26
13
47
33
34
29

5
10
8
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

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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 = R 0

=
=

11001100000000001100110011111111
11110000101010101111000010101010

16 vng lp m c th hin nh sau:


E(R0) = 011110100001010101010101011110100001010101010101
K1 = 000110110000001011101111111111000111000001110010
E(R0) K1 = 011000010001011110111010100001100110010100100111
Output S-hp = 01011100100000101011010110010111
f(R0,K1) = 00100011010010101010100110111011
L2 = R1 = 11101111010010100110010101000100
E(R1)
K2
E(R1) K2
Output S-hp
f(R1, K2)
L3 = R 2

=
=
=
=
=
=

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)
L5 = R4

=
=
=
=
=
=

010100000100001011111000000001010111111110101001
011100101010110111010110110110110011010100011101
001000101110111100101110110111100100101010110100
00100001111011011001111100111010
10111011001000110111011101001100
011101110

E(R4)
K5
E(R4) K5
Xut S-hp
f(R4, K5)
L6 = R5

=
=
=
=
=
=

101110101110100100000100000000000000001000001010
011111001110110000000111111010110101001110101000
110001100000010100000011111010110101000110100010
01010000110010000011000111101011
00101000000100111010110111000011
10001010010011111010011000110111

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

E(R5)
K6
E(R5) K6
S-box output
f(R5, K6)
L7 = R6

=
=
=
=
=
=

E(R6)
K7
E(R6) K7
S-box output
f(R6, K7)
L8 = R 7

=
=
=
=
=
=

111101010010101100001111111001011010101101010011
111011001000010010110111111101100001100010111100
000110011010111110111000000100111011001111101111
00010000011101010100000010101101
10001100000001010001110000100111
00000110010010101011101000010000

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
E(R10)
K11
E(R10) K11
S-box output
f(R10, K11)
L12 = R11

=
=
=
=
=
=
=
=
=
=
=
=

000100001000001111111001011000001100001111110100
101100011111001101000111101110100100011001001111
101000010111000010111110110110101000010110111011
11011010000001000101001001110101
01100010101111001001110000100010
10110111110101011101011110110010
010110101111111010101011111010101111110110100101
001000010101111111010011110111101101001110000110
011110111010000101111000001101000010111000100011
01110011000001011101000100000001
11100001000001001111101000000010
11000101011110000011110001111000

E(R11)
K12
E(R11) K12
S-box output
f(R11, K12)
L13 = R12

110001010100001001011111110100001100000110101111
011000111010010100111110010100000111101100101111
101001101110011101100001100000001011101010000000
01000001111100110100110000111101
10011110010001011100110100101100
11101001011001111100110101101001

011000001010101111110000000111111000001111110001
011101010111000111110101100101000110011111101001
000101011101101000000101100010111110010000011000
01111011100010110010011000110101
11000010011010001100111111101010
01110101101111010001100001011000

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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

E(R14)
K15
E(R14) K15
S-box output
f(R14, K15)
L16 = R15

=
=
=
=
=
=

111000000101010001011001010010101100000001011011
101111111001000110001101001111010011111100001010
010111111100010111010100011101111111111101010001
10110010111010001000110100111100
01011011100000010010011101101110
01000011010000100011001000110100

E(R15) = 001000000110101000000100000110100100000110101000
K16 = 110010110011110110001011000011100001011111110101
E(R15) K16 = 111010110101011110001111000101000101011001011101
S-box output = 10100111100000110010010000101001
f(R15, K16) = 11001000110000000100111110011000
R16 = 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 hon v khi to IP v hon 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.
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.

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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
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.
ngha:
v

nh ngha 3.3: Vi 1 j 8 v vi cc xu bit Bj di 6 v Cj di 4, ta nh


INj(Bj,Cj) = {Bj (Z2)6 : Sj(Bj) Sj(Bj Bj) = Cj}
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
0000
0001
0010
0011

NGO TH TUYET HA T012825

Cc xu nhp c th c
000011, 001111, 011110, 011111
101010, 101011, 110111, 111011
000100, 000101, 001110, 010001
010010, 010100, 011010, 011011
100000, 100101, 010110, 101110
101111, 110000, 110001, 111010
000001, 000010, 010101, 100001
110101, 110110

O AN BAO MAT THONG TIN


0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

HE MA DES

010011, 100111
000000, 001000, 001101, 010111
011000, 011101, 100011, 101001
101100, 110100, 111001, 111100
001001, 001100, 011001, 101101
111000, 111101

000110, 010000, 010110, 011100


110010, 100100, 101000, 110010
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 Shp 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
rng ca Ri-1 v J = Ki gm cc bit kha ca vng i. By gi xu nhp x-or (cho tt c tm Shp) 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).

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

, 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
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 Shp. 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:
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 hon 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)

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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 hon ton t 28 = 256 kh nng cho 8 bit kha.
By gi ta s minh ha iu qua v d sau.
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 m
Bn r
748502CD38451097
3874756438451097
486911026ACDFF31
375BD31F6ACDFF31
357418DA013FEC86
12549847013FEC86

03C70306D8A09F10
78560A0960E6D4CB
45FA285BE5ADC730
134F7915AC253457
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
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:
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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
0
1
0

0
0
0
0

0
0
0
0

0
0
0
0

1
1
1
0

0
1
0
0

1
0
0
0

0
0
0
0

0
1
0
0

0
0
0
1

1
0
0
1

0
0
0
0

3
2
1
0

0
0
0
0

0
0
0
0

0
0
1
0

0
0
0
0

0
0
0
0

0
1
0
0

0
1
0
0

0
0
0
0

0
0
0
0

0
0
3
1

1
0
1
1

0
0
0
0

0
0
1
1

1
0
0
0

0
1
0
2

0
0
0
0

0
0
1
0

0
0
0
0

0
0
0
0

0
0
0
0

0
0
0
0

0
0
0
0

0
0
1
1

0
0
1
0

1
1
0
0

0
1
0
0

0
0
0
0

0
0
1
0

2
0
1
0

2
0
1
0

0
1
0
0

0
0
0
0

0
1
1
2

0
1
0
1

0
3
0
0

0
0
0
1

1
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
0
0

0
0
0
0

0
0
0
0

0
0
0
0

1
0
0
0

0
0
0
0

0
0
0
0

1
0
0
0

0
0
0
0

0
0
0
0

0
0
0
0

1
1
1
0

1
0
2
0

0
0
1
0

0
0
1
1

0
1
0
1

J2

J3
0
0
0
0

0
0
2
0

0
0
0
0

0
3
0
0

1
0
0
0

1
0
0
0

0
0
0
1

0
0
0
0

3
0
1
0

1
0
1
0

0
0
1
0

0
0
0
0

0
1
1
1

0
1
0
1

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
2
0
0

0
0
0
0

1
0
0
0

0
0
0
0

J4

J5

J6
1
0
0
1

0
0
0
0

0
0
0
0

1
0
0
1

1
1
1
1

0
1
1
0

0
0
0
1

3
0
1
1

0
0
0
0

0
1
0
0

2
0
2
0

1
0
0
0

0
0
0
0

1
0
0
0

0
0
2
0

3
0
0
0

J7

J8
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN


0
0
0
0

0
0
0
3

0
0
0
0

0
0
0
0

0
0
0
0

0
0
0
0

0
0
0
1

0
0
0
0

HE MA DES
0
0
1
0

0
0
0
0

0
0
1
0

0
0
0
0

0
0
0
0

0
0
1
0

0
0
0
0

0
0
1
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
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 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
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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 =
L1 =

bt k
0000000016

R0 =
R1 =

0000000016
L0

p=1

Ta cng s m t mt c trng vng 1 khc nh sau


L0 =
L1 =

0000000016
6000000016

R0 =
R1 =

6000000016
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
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
R0 = 0400000016
0400000016
R1 = 0000000016 p = 1/4
0000000016
R2 = 0400000016 p = 1
0400000016
R3 = 4008000016 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:
001000000000000001010000...0

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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.
2.

Tnh C = P-1(R6 0400000016)


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
ton, 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.
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:
1 16
=1 6
1 16 +15 16 1 3

V d 3.4: Gi s ta c cp bn r - bn m sau:

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN


Bn r
86FA1C2B1F51D3BE
C6F21C2B1B51D3BE

HE MA DES
Bn m
1E23ED7F2F553971
296DE2B687AC6340

Ch l, L0 = 4008000016 v R0 = 0400000016. Xu nhp v xu xut ca S-hp cho vng 6


c tnh nh sau:
j
2
5
6
7
8

Ej*
010010
111100
000101
010110
101100

Ej
111100
111101
011010
101111
111110

Cj
1101
0001
0010
1100
1101

Khi cc tp testj s l nh sau:


j
2
5
6
7
8

testj
14, 15,26, 30, 32, 33, 48, 52
7, 24, 36, 41, 54, 59
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:
test

j
2 , 5, 6 , 7 , 8

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
ton 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 i 63), 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

i
j

iI

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
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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 ton 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.

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)

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

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
Dim daykhoa(15) As String
Dim x As String
Dim daynhap(29) As String
Dim daybanma(29) As String
khoi tao

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

s(0).Rows(3).Item(3) = 2
s(0).Rows(3).Item(4) = 4
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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

Ham khoi tao s2


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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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)

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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
s(4).Rows(1).Item(1) = 11

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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
s(5).Rows(1).Item(15) = 8
s(5).Rows(2).Item(0) = 9

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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)
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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
s(6).Rows(2).Item(13) = 5
s(6).Rows(2).Item(14) = 9
s(6).Rows(2).Item(15) = 2

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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()
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

HE MA DES

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()
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

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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)
Next
Return tam
End Function
Ho 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 kho
Sub taodaykhoa()
Dim khoa as String =
"00010011001101000101011101111001100110111011110011011111111
10001"

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Dim khoa As String = txtkhoak.Text


Dim j As Integer
If khoa.Length > 8 Then
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
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)

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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)
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

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

tam(i) = (int Mod 2).ToString


int \= 2
Next
Array.Reverse(tam)
Return tam
End Function
Mt s hm m ho
Hm hon v ip
Function hvip(ByVal x As String) As String
Dim tam(63) As Char
Dim i As Integer
For i = 0 To 63
tam(i) = x.Substring(ip(i) - 1, 1)
Next
Return tam
End Function
Hm hon 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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

HE MA DES

Return tam
End Function
Hm hon 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 ho
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)
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, daykhoa(0)).Substring(i,
1)).ToString
Next
For i = 1 To 15
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

l(i) = r(i - 1)
Dim a As String = f(r(i - 1), daykhoa(i))
For j = 0 To 31
r(i) += (l(i - 1).Substring(j, 1) Xor a.Substring(j, 1)).ToString
Next j
Next i
Dim v As String = hviptru(r(15) + l(15))
y += v
Next k
Return y
End Function
Hm f
Function f(ByVal r As String, ByVal k As String) As String
Dim i As Integer
Dim e As String
Dim hv As String = hve(r)
For i = 0 To 47
e += (hv.Substring(i, 1) Xor k.Substring(i, 1)).ToString
Next
Dim b(7) As String
Dim c As String
For i = 0 To 7
b(i) = e.Substring(i * 6, 6)
Dim haibitcuoi As String = b(i).Substring(0, 1) + b(i).Substring(5,
1)
Dim bonbitgiua As String = b(i).Substring(1, 4)
Dim srow = thapphan(haibitcuoi)
Dim scol = thapphan(bonbitgiua)
Dim sij As Integer = s(i).Rows(srow).Item(scol)
c += binary(sij)
Next

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

c = hvp(c)
Return c
End Function
Hm thp phn
Function thapphan(ByVal b As String) As Integer
Dim i As Integer
Dim tam As Integer = 0
For i = 0 To b.Length - 1
If b.Substring(i, 1) = 1 Then
tam += 2 ^ (b.Length - 1 - i)
End If
Next
Return tam
End Function
Hm nh phn
Function binary(ByVal a As Integer) As String
Dim i As Integer
Dim tam(3) As Char
For i = 0 To 3
tam(i) = (a Mod 2).ToString
a=a\2
Next
Array.Reverse(tam)
Return tam
End Function
Hm i ra ch
Function doirachu(ByVal y As String) As String
Dim tam As String = y
Dim tam1 As String = ""
Dim so As Integer
Dim i As Integer

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

HE MA DES

Dim j As Integer
While i < tam.Length - 1
so = 0
For j = i To i + 7
If tam.Substring(j, 1) = 1 Then
so += 2 ^ (7 - (j - i))
End If
Next
tam1 += Chr(so)
i=i+8
End While
Return tam1
End Function
#End Region
mt s hm dng gii m
to bn m nh phn
Sub binaybanma()
Dim sodaybanma = txtbanma.Text.Length \ 8
Dim i, j As Integer
Dim tam As String
ReDim daybanma(sodaybanma - 1)
For i = 0 To sodaybanma - 1
daybanma(i) = txtbanma.Text.Substring(i * 8, 8)
tam = ""
For j = 0 To daybanma(i).Length - 1
tam += bi_acsii(Asc(daybanma(i).Substring(j, 1)))
Next
daybanma(i) = tam
Next i
End Sub
Hm gii m

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Function giaima() As String


binaybanma()
Dim k As Integer
x = ""
For k = 0 To daybanma.Length - 1
Dim y0 As String = hvip(daybanma(k))
Dim rr As String = y0.Substring(0, 32)
Dim ll As String = y0.Substring(32, 32)
Dim i, j As Integer
Dim l(15) As String
Dim r(15) As String
r(15) = ll
For i = 0 To 31
l(15) += (rr.Substring(i, 1) Xor f(ll, daykhoa(15)).Substring(i,
1)).ToString
Next
For i = 14 To 0 Step -1
r(i) = l(i + 1)
Dim a As String = f(l(i + 1), daykhoa(i))
For j = 0 To 31
l(i) += (r(i + 1).Substring(j, 1) Xor a.Substring(j, 1)).ToString
Next j
Next i
x += hviptru(l(0) + r(0))
Next k
Return x
End Function
Mt s s kin gip cho vic thc thi
Private Sub des_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
khoitao()
End Sub
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Private Sub btlapma_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btlapma.Click
khoitao()
If txtchuoinhap.Text = "" Then
MessageBox.Show("Bn hy nhp vo chui cn m h")
txtchuoinhap.Focus()
Return
End If
If txtkhoak.Text = "" Or txtkhoak.Text.Length < 8 Then
MessageBox.Show("Bn hy nhp vo kha :8 k t")
txtkhoak.Focus()
Return
End If
txtdaykhoa.Text = ""
taodaykhoa()
txtbanmabit.Text = mahoa()
txtbanma.Text = doirachu(mahoa())
End Sub
Private Sub btthoat_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btthoat.Click
Me.Close()
End Sub
Private Sub btgiaima_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btgiaima.Click
If txtkhoak.Text = "" Or txtkhoak.Text.Length < 8 Then
MessageBox.Show("Bn hy nhp kha : 8 k t")
txtkhoak.Focus()
Return
End If
If txtbanma.Text = "" Then
MessageBox.Show("Bn hy nhp vo chui cn gii m")
txtbanma.Focus()
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

Return
End If
txtdaykhoa.Text = ""
taodaykhoa()
txtbanrobit.Text = giaima()
txtbanro.Text = doirachu(giaima())
End Sub
End Class

Form thm m Des (thamma.vb)

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

HE MA DES

Imports System.Windows.Forms
Public Class thammades

Inherits System.Windows.Forms.Form

Khai bo mt s bin v hm
Dim banro() As String
Dim banma() As String
Dim hve(47) As Integer
Dim hvp(31) As Integer
Dim hvpc2(47) As Integer
Dim hvpc1(55) As Integer
Dim hvip(63) As Integer
Dim e() As String
Dim esao() As String
Dim ephay() As String
Dim cphay() As String
Dim jhop(7, 63) As Integer
Dim s(7) As DataTable
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

Dim chuoikhoa(255) As String


Dim daykhoa(2) As String
Dim n As Integer '6 ban ro va 6 ban ma
Const m = 16 '8 ki tu
Const hebit = 4 'he 256
Dim flag As Boolean
Khi to
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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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
End Sub
Khi to hm 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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
End Sub
Khi to hm s2
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
s(2).Rows(0).Item(12) = 11
s(2).Rows(0).Item(13) = 4

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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
End Sub
Khi to hm 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)

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

Next
s(3).Rows(0).Item(0) = 7
s(3).Rows(0).Item(1) = 13
s(3).Rows(0).Item(2) = 14
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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

s(3).Rows(3).Item(13) = 7
s(3).Rows(3).Item(14) = 2
s(3).Rows(3).Item(15) = 14
End Sub
Khi to hm s4
Sub khoitao_s4()
Dim i As Integer
s(4) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

s(4).Rows(0).Item(15) = 9
s(4).Rows(1).Item(0) = 14
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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
s(4).Rows(3).Item(15) = 3
End Sub
Khi to hm 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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

s(5).Rows(3).Item(14) = 8
s(5).Rows(3).Item(15) = 13
End Sub
Khi to hm 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)
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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
s(6).Rows(2).Item(13) = 5
s(6).Rows(2).Item(14) = 9

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
End Sub
Khi to hm s7
Sub khoitao_s7()
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

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
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
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

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

s(7).Rows(3).Item(15) = 11
End Sub
Khi to hon v e
Sub khoitao_hve()
hve(0) = 32
hve(1) = 1
hve(2) = 2
hve(3) = 3
hve(4) = 4
hve(5) = 5
hve(6) = 4
hve(7) = 5
hve(8) = 6
hve(9) = 7
hve(10) = 8
hve(11) = 9
hve(12) = 8
hve(13) = 9
hve(14) = 10
hve(15) = 11
hve(16) = 12
hve(17) = 13
hve(18) = 12
hve(19) = 13
hve(20) = 14
hve(21) = 15
hve(22) = 16
hve(23) = 17
hve(24) = 16
hve(25) = 17
hve(26) = 18

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

hve(27) = 19
hve(28) = 20
hve(29) = 21
hve(30) = 20
hve(31) = 21
hve(32) = 22
hve(33) = 23
hve(34) = 24
hve(35) = 25
hve(36) = 24
hve(37) = 25
hve(38) = 26
hve(39) = 27
hve(40) = 28
hve(41) = 29
hve(42) = 28
hve(43) = 29
hve(44) = 30
hve(45) = 31
hve(46) = 32
hve(47) = 1
End Sub
Khi to hon v p
Sub khoitao_hvp()
hvp(0) = 16
hvp(1) = 7
hvp(2) = 20
hvp(3) = 21
hvp(4) = 29
hvp(5) = 12
hvp(6) = 28

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

hvp(7) = 17
hvp(8) = 1
hvp(9) = 15
hvp(10) = 23
hvp(11) = 26
hvp(12) = 5
hvp(13) = 18
hvp(14) = 31
hvp(15) = 10
hvp(16) = 2
hvp(17) = 8
hvp(18) = 24
hvp(19) = 14
hvp(20) = 32
hvp(21) = 27
hvp(22) = 3
hvp(23) = 9
hvp(24) = 19
hvp(25) = 13
hvp(26) = 30
hvp(27) = 6
hvp(28) = 22
hvp(29) = 11
hvp(30) = 4
hvp(31) = 25
End Sub
Khi to hon v pc2
Sub khoitao_hvpc2()
hvpc2(0) = 14
hvpc2(1) = 17
hvpc2(2) = 11

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

hvpc2(3) = 24
hvpc2(4) = 1
hvpc2(5) = 5
hvpc2(6) = 3
hvpc2(7) = 28
hvpc2(8) = 15
hvpc2(9) = 6
hvpc2(10) = 21
hvpc2(11) = 10
hvpc2(12) = 23
hvpc2(13) = 19
hvpc2(14) = 12
hvpc2(15) = 4
hvpc2(16) = 26
hvpc2(17) = 8
hvpc2(18) = 16
hvpc2(19) = 7
hvpc2(20) = 27
hvpc2(21) = 20
hvpc2(22) = 13
hvpc2(23) = 2
hvpc2(24) = 41
hvpc2(25) = 52
hvpc2(26) = 31
hvpc2(27) = 37
hvpc2(28) = 47
hvpc2(29) = 55
hvpc2(30) = 30
hvpc2(31) = 40
hvpc2(32) = 51
hvpc2(33) = 45

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

hvpc2(34) = 33
hvpc2(35) = 48
hvpc2(36) = 44
hvpc2(37) = 49
hvpc2(38) = 39
hvpc2(39) = 56
hvpc2(40) = 34
hvpc2(41) = 53
hvpc2(42) = 46
hvpc2(43) = 42
hvpc2(44) = 50
hvpc2(45) = 36
hvpc2(46) = 29
hvpc2(47) = 32
End Sub
Khi to ho v pc1
Sub khoitao_hvpc1()
hvpc1(0) = 57
hvpc1(1) = 49
hvpc1(2) = 41
hvpc1(3) = 33
hvpc1(4) = 25
hvpc1(5) = 17
hvpc1(6) = 9
hvpc1(7) = 1
hvpc1(8) = 58
hvpc1(9) = 50
hvpc1(10) = 42
hvpc1(11) = 34
hvpc1(12) = 26
hvpc1(13) = 18

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

hvpc1(14) = 10
hvpc1(15) = 2
hvpc1(16) = 59
hvpc1(17) = 51
hvpc1(18) = 43
hvpc1(19) = 35
hvpc1(20) = 27
hvpc1(21) = 19
hvpc1(22) = 11
hvpc1(23) = 3
hvpc1(24) = 60
hvpc1(25) = 52
hvpc1(26) = 44
hvpc1(27) = 36
hvpc1(28) = 63
hvpc1(29) = 55
hvpc1(30) = 47
hvpc1(31) = 39
hvpc1(32) = 31
hvpc1(33) = 23
hvpc1(34) = 15
hvpc1(35) = 7
hvpc1(36) = 62
hvpc1(37) = 54
hvpc1(38) = 46
hvpc1(39) = 38
hvpc1(40) = 30
hvpc1(41) = 22
hvpc1(42) = 14
hvpc1(43) = 6
hvpc1(44) = 61

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

hvpc1(45) = 53
hvpc1(46) = 45
hvpc1(47) = 37
hvpc1(48) = 29
hvpc1(49) = 21
hvpc1(50) = 13
hvpc1(51) = 5
hvpc1(52) = 28
hvpc1(53) = 20
hvpc1(54) = 12
hvpc1(55) = 4
End Sub
Khi to ho v ip
Sub khoitao_hvip()
hvip(0) = 58
hvip(1) = 50
hvip(2) = 42
hvip(3) = 34
hvip(4) = 26
hvip(5) = 18
hvip(6) = 10
hvip(7) = 2
hvip(8) = 60
hvip(9) = 52
hvip(10) = 44
hvip(11) = 36
hvip(12) = 28
hvip(13) = 20
hvip(14) = 12
hvip(15) = 4
hvip(16) = 62

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

hvip(17) = 54
hvip(18) = 46
hvip(19) = 38
hvip(20) = 30
hvip(21) = 22
hvip(22) = 14
hvip(23) = 6
hvip(24) = 64
hvip(25) = 56
hvip(26) = 48
hvip(27) = 40
hvip(28) = 32
hvip(29) = 24
hvip(30) = 16
hvip(31) = 8
hvip(32) = 57
hvip(33) = 49
hvip(34) = 41
hvip(35) = 33
hvip(36) = 25
hvip(37) = 17
hvip(38) = 9
hvip(39) = 1
hvip(40) = 59
hvip(41) = 51
hvip(42) = 43
hvip(43) = 35
hvip(44) = 27
hvip(45) = 19
hvip(46) = 11
hvip(47) = 3

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

hvip(48) = 61
hvip(49) = 53
hvip(50) = 45
hvip(51) = 37
hvip(52) = 29
hvip(53) = 21
hvip(54) = 13
hvip(55) = 5
hvip(56) = 63
hvip(57) = 55
hvip(58) = 47
hvip(59) = 39
hvip(60) = 31
hvip(61) = 23
hvip(62) = 15
hvip(63) = 7
End Sub
Khi to cc hm
Sub khoitao()
khoitao_s0()
khoitao_s1()
khoitao_s2()
khoitao_s3()
khoitao_s4()
khoitao_s5()
khoitao_s6()
khoitao_s7()
khoitao_hve()
khoitao_hvp()
khoitao_hvpc2()
khoitao_hvpc1()

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

khoitao_hvip()
End Sub
cc hm hon v
Hm hon v ip
Function hoanvi_ip(ByVal x As String) As String
Dim tam(63) As Char
Dim i As Integer
For i = 0 To 63
tam(i) = x.Substring(hvip(i) - 1, 1)
Next
Return tam
End Function
Hm hon v iptru
Function hoanvi_iptru(ByVal c As String) As String
Dim tam(63) As Char
Dim i As Integer
For i = 0 To 63
tam(hvip(i) - 1) = c.Substring(i, 1)
Next
Return tam
End Function
Hm hon v e
Function hoanvi_e(ByVal r As String) As String
Dim tam(47) As Char
Dim i As Integer
For i = 0 To 47
tam(i) = r.Substring(hve(i) - 1, 1)
Next
Return tam
End Function
Hm hon v p

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

HE MA DES

Function hoanvi_p(ByVal c As String) As String


Dim tam(31) As Char
Dim i As Integer
For i = 0 To 31
tam(i) = c.Substring(hvp(i) - 1, 1)
Next
Return tam
End Function
Hm hon v ptru
Function hoanvi_ptru(ByVal c As String) As String
Dim tam(31) As Char
Dim i As Integer
For i = 0 To 31
tam(hvp(i) - 1) = c.Substring(i, 1)
Next
Return tam
End Function
Hm hon v pc1
Function hoanvi_pc1(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(hvpc1(i) - 1), 1)
Next
Return tam
End Function
Hm hon v pc1tru

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Function hoanvi_pc1tru(ByVal c As String) As String


Dim tam(63) As Char
Dim i As Integer
For i = 0 To 63
tam(i) = "#"
Next
For i = 0 To 55
tam(hvpc1(i) - 1) = c.Substring(i, 1)
Next
Dim tam1 As String
Return tam
End Function
Hm hon v pc2
Function hoanvi_pc2(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(hvpc2(i) - 1), 1)
Next
Return tam
End Function
Hm hon v pc2tru
Function hoanvi_pc2tru(ByVal c As String) As String
Dim tam(55) As Char
Dim i As Integer
For i = 0 To 55
tam(i) = "?"
Next
For i = 0 To 47
tam(hvpc2(i) - 1) = c.Substring(i, 1)

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Next
Return tam
End Function
gan va kiem tra du lieu nhap
hm gn d liu
Function gandulieu() As Boolean
Try
Dim i As Integer = 0
Dim j As Integer
Dim strbanro As String = txtbanro.Text.Replace(Chr(10), "")
Dim strbanma As String = txtbanma.Text.Replace(Chr(10), "")
banro = strbanro.Split(Chr(13))
banma = strbanma.Split(Chr(13))
n = banro.Length - 1
ReDim e((n - 1) / 2)
ReDim esao((n - 1) / 2)
ReDim ephay((n - 1) / 2)
ReDim cphay((n - 1) / 2)
If (banro.Length - 1 < n Or banma.Length - 1 < n) Then
MessageBox.Show("thiu bn r hay bn m")
Return False
Else
Return True
End If
Catch ex As Exception
MessageBox.Show("D liu nhp khng hp l")
Return False
End Try
End Function
Hm kim tra
Function kiemtra() As Boolean

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Dim i As Integer
For i = 0 To n
If banro(i) = "" Then
MessageBox.Show("bn nhp cha " & (i + 1))
Return False
End If
If banro(i).Length <> m Then
MessageBox.Show( (i + 1) & m )
Return False
End If
Next
For i = 0 To n
If banma(i) = "" Then
MessageBox.Show("Bn hy nhp vo bn m th " & (i + 1))
Return False
End If
If banma(i).Length <> m Then
MessageBox.Show("Bn m " & (i + 1) & " phi c " & m & "
k t")
Return False
End If
Next
i=0
While i <= n
If banro(i).Substring(m / 2, m / 2) <> banro(i + 1).Substring(m / 2, m / 2) Then
MessageBox.Show("D liu bn r " & (i + 1) & " , " & (i + 2) & " nhp
khng hp l")
Return False
End If
i=i+2
End While
Return True
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

End Function
xu li e_esao_ephay_cphay
x l e, e sao, e phy
Sub xuli_e_esao_ephay()
Dim i As Integer
'e(0)= "000000000111111000001110100000000110100000001100"
'e(1)= "101000001011111111110100000101010000001011110110"
'e(2)= "111011110001010100000110100011110110100101011111"
'esao(0)="101111110000001010101100000001010100000001010010"
'esao(1)="100010100110101001011110101111110010100010101010"
'esao(2) = "000001011110100110100010101111110101011000000100"
For i = 0 To (n - 1) / 2
Dim l3 = banma(i * 2).Substring(0, 32)
Dim l3sao = banma(i * 2 + 1).Substring(0, 32)
e(i) = hoanvi_e(l3)
esao(i) = hoanvi_e(l3sao)
ephay(i) = phay(e(i), esao(i))
Next
End Sub
Function phay(ByVal a As String, ByVal b As String) As String
Dim i As Integer
Dim c As String
For i = 0 To a.Length - 1
c += (a.Substring(i, 1) Xor b.Substring(i, 1)).ToString
Next
Return c
End Function
X l c phy
Sub xuli_cphay()
Dim i, j As Integer
For i = 0 To (n - 1) / 2

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Dim r3 As String = banma(i * 2).Substring(32, 32)


Dim r3sao As String = banma(i * 2 + 1).Substring(32, 32)
Dim l0 As String = banro(i * 2).Substring(0, 32)
Dim l0sao As String = banro(i * 2 + 1).Substring(0, 32)
Dim r3phay As String = ""
Dim l0phay As String = ""
For j = 0 To 31
r3phay += (r3.Substring(j, 1) Xor r3sao.Substring(j, 1)).ToString
l0phay += (l0.Substring(j, 1) Xor l0sao.Substring(j, 1)).ToString
cphay(i) += (r3phay.Substring(j, 1) Xor l0phay.Substring(j, 1)).ToString
Next
cphay(i) = hoanvi_ptru(cphay(i))
Next
'cphay(0) = "10010110010111010101101101100111"
'cphay(1) = "10011100100111000001111101010110"
'cphay(2) = "11010101011101011101101100101011"
End Sub
cac ham chuyen doi
Function bi_str(ByVal a As String) As String
Dim i As Integer
Dim b As String
For i = 0 To a.Length - 1
b += binary(asc(a.Substring(i, 1)), hebit)
Next
Return b
End Function
Sub bi_banro_banma()
Dim i As Integer
For i = 0 To n
banro(i) = bi_str(banro(i))
banma(i) = bi_str(banma(i))

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Next
End Sub
Function bi_so(ByVal a As Integer) As String
Dim i As Integer
Dim tam(5) As Char
For i = 0 To 5
tam(i) = (a Mod 2).ToString
a \= 2
Next
Array.Reverse(tam)
Return tam
End Function
Function thapphan(ByVal b As String) As Integer
Dim i As Integer
Dim tam As Integer = 0
For i = 0 To b.Length - 1
If b.Substring(i, 1) = 1 Then
tam += 2 ^ (b.Length - 1 - i)
End If
Next
Return tam
End Function
Function binary(ByVal a As Integer, ByVal n As Integer) As String
Dim i As Integer
Dim tam(n - 1) As Char
For i = 0 To n - 1
tam(i) = (a Mod 2).ToString
a=a\2
Next
Array.Reverse(tam)
Return tam

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

End Function
Hm to tp test
Function tap_test() As String()
Dim i, j, k As Integer
Dim ee(7) As String
Dim eephay(7) As String
Dim ccphay(7) As String
Dim test(63) As String
For i = 0 To (n - 1) / 2
For j = 0 To 7
ee(j) = e(i).Substring(j * 6, 6)
eephay(j) = ephay(i).Substring(j * 6, 6)
ccphay(j) = cphay(i).Substring(j * 4, 4)
test = tap_in(ee(j), eephay(j), ccphay(j), s(j))
For k = 0 To 63
If test(k) = 1 Then
jhop(j, k) += 1
End If
Next
Next
Next
End Function
Hm to kho vng 3
Function khoavong3() As String
Dim khoav3 As String
Dim i, j As Integer
Dim count As Integer = 0
Dim vitrimax As Integer
For i = 0 To 7
count = 0
Dim max As Integer = (n + 1) / 2

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

HE MA DES

For j = 0 To 63
If jhop(i, j) = max Then
count += 1
vitrimax = j
End If
Next
If count > 1 Then
lbthongbao.Text = "Nhp thm bn m v bn r, v cha xc nh
c phn t max trong jhp"
btthamma.Enabled = False
txtbanro.Focus()
n += 2
ReDim banro(n)
ReDim banma(n)
ReDim e((n - 2) / 2)
ReDim esao((n - 2) / 2)
ReDim ephay((n - 2) / 2)
ReDim cphay((n - 2) / 2)
flag = False
Exit Function
End If
khoav3 += binary(vitrimax, 6)
Next
txtkhoav3.Text = khoav3
Return khoav3
End Function
Hm X l kho
Function xulikhoa() As String
Dim khoa As String = khoavong3()
If flag = False Then
Exit Function

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

End If
khoa = hoanvi_pc2tru(khoa)
Dim haitambitdau As String = khoa.Substring(0, 28)
Dim haitambitcuoi As String = khoa.Substring(28, 28)
haitambitdau = dichphai(haitambitdau, 4)
haitambitcuoi = dichphai(haitambitcuoi, 4)
khoa = haitambitdau + haitambitcuoi
Dim i As Integer
khoa = hoanvi_pc1tru(khoa)
txtkhoa.Text = khoa
Return khoa 'khoa 56 bit
End Function
Hm to chui kho
Sub taochuoikhoa(ByVal c As String)
If flag = False Then
Exit Sub
End If
Dim chuoibinary(255) As String
Dim i As Integer
For i = 0 To 255
chuoibinary(i) = binary(i, 8)
chuoikhoa(i) = taotungkhoa(c, chuoibinary(i))
Next
End Sub
Hm to tng kho
Function taotungkhoa(ByVal a As String, ByVal b As String) As
String
Dim i As Integer
Dim j As Integer = 0
Dim tam(63) As Char
For i = 0 To 63

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

tam(i) = a.Substring(i, 1)
If tam(i) = "?" Then
tam(i) = b.Substring(j, 1)
j += 1
End If
Next
Return tam
End Function
Hm dch phi
Function dichphai(ByVal s As String, ByVal n As Integer) As String
Return s.Substring(s.Length - n, n) + s.Substring(0, s.Length - n)
End Function
Function tap_in(ByVal e As String, ByVal ephay As String, ByVal
cphay As String, ByVal s As DataTable) As String()
Dim tam(63), b, bsao, c, csao, cphaytam As String
Dim i As Integer
For i = 0 To 63
b = bi_so(i)
Dim haibitcuoi As String = b.Substring(0, 1) + b.Substring(5, 1)
Dim bonbitgiua As String = b.Substring(1, 4)
Dim srow = thapphan(haibitcuoi)
Dim scol = thapphan(bonbitgiua)
Dim sij As Integer = s.Rows(srow).Item(scol)
c = binary(sij, 4)
bsao = phay(ephay, b)
haibitcuoi = bsao.Substring(0, 1) + bsao.Substring(5, 1)
bonbitgiua = bsao.Substring(1, 4)
srow = thapphan(haibitcuoi)
scol = thapphan(bonbitgiua)
sij = s.Rows(srow).Item(scol)
csao = binary(sij, 4)

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

cphaytam = phay(c, csao)


If cphaytam = cphay Then
tam(thapphan(phay(e, b))) = 1
End If
Next
Return tam
End Function
Mt s Hm cho x l s kin
Private Sub btthamma_Click(ByVal sender As System.Object, ByVal
ee As System.EventArgs) Handles btthamma.Click
ReDim banro(n)
ReDim banma(n)
ReDim e((n - 1) / 2)
ReDim esao((n - 1) / 2)
ReDim ephay((n - 1) / 2)
ReDim cphay((n - 1) / 2)
flag = True
If gandulieu() = False Then
Exit Sub
End If
If kiemtra() = False Then
Exit Sub
End If
bi_banro_banma()
xuli_e_esao_ephay()
xuli_cphay()
tap_test()
taochuoikhoa(xulikhoa())
If flag = False Then
Exit Sub
End If

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

chonkhoadung()
End Sub
Private Sub btthoat_Click(ByVal sender As System.Object, ByVal ee
As System.EventArgs) Handles btthoat.Click
Me.Close()
End Sub
Private Sub thammades_Load(ByVal sender As System.Object, ByVal
ee As System.EventArgs) Handles MyBase.Load
Dim strbanro As String
strbanro += "748502CD38451097" + Chr(13) + Chr(10)
strbanro += "3874756438451097" + Chr(13) + Chr(10)
strbanro += "486911026ACDFF31" + Chr(13) + Chr(10)
strbanro += "375BD31F6ACDFF31" + Chr(13) + Chr(10)
strbanro += "357418DA013FEC86" + Chr(13) + Chr(10)
strbanro += "12549847013FEC86"
txtbanro.Text = strbanro
Dim strbanma As String
strbanma += "03C70306D8A09F10" + Chr(13) + Chr(10)
strbanma += "78560A0960E6D4CB" + Chr(13) + Chr(10)
strbanma += "45FA285BE5ADC730" + Chr(13) + Chr(10)
strbanma += "134F7915AC253457" + Chr(13) + Chr(10)
strbanma += "D8A31B2F28BBC5CF" + Chr(13) + Chr(10)
strbanma += "0F317AC2B23CB944"
txtbanma.Text = strbanma
khoitao()
End Sub
'des
Hm ct bit cui
Function catbitcuoi(ByVal k As String) As String 'dua vao 64 bit tra ra
56 bit
Dim i As Integer = 0
NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

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 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 kho
Sub taodaykhoa(ByVal khoa As String)
khoa = hoanvi_pc1(khoa)
Dim d(2) As String
Dim c(2) As String
c(0) = khoa.Substring(0, 28)
c(0) = ls(c(0), 1)
d(0) = khoa.Substring(28, 28)
d(0) = ls(d(0), 1)
daykhoa(0) = hoanvi_pc2(c(0) + d(0))
Dim i As Integer
For i = 1 To 2
If i = 1 Then
c(i) = ls(c(i - 1), 1)
d(i) = ls(d(i - 1), 1)
Else
c(i) = ls(c(i - 1), 2)
d(i) = ls(d(i - 1), 2)

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

End If
daykhoa(i) = hoanvi_pc2(c(i) + d(i))
Next i
End Sub
Hm x l chui nhp
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
Hm m ho
Function mahoa(ByVal x As String) As String
Dim i, j As Integer
Dim l(2) As String
Dim r(2) As String
'x = hoanvi_ip(x)
Dim l0 As String = x.Substring(0, 32)
Dim r0 As String = x.Substring(32, 32)
l(0) = r0
For i = 0 To 31
r(0) += (l0.Substring(i, 1) Xor f(r0, daykhoa(0)).Substring(i,
1)).ToString
Next
For i = 1 To 2
l(i) = r(i - 1)
Dim a As String = f(r(i - 1), daykhoa(i))

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

For j = 0 To 31
r(i) += (l(i - 1).Substring(j, 1) Xor a.Substring(j, 1)).ToString
Next j
Next i
Dim t As String = l(2) + r(2)
Return t
'Return hoanvi_iptru(r(2) + l(2))
End Function
Hm to hm f
Function f(ByVal r As String, ByVal daykhoa_k As String) As String
Dim i As Integer
Dim e As String
Dim hv As String = hoanvi_e(r)
For i = 0 To 47
e += (hv.Substring(i, 1) Xor daykhoa_k.Substring(i, 1)).ToString
Next
Dim b(7) As String
Dim c As String
For i = 0 To 7
b(i) = e.Substring(i * 6, 6)
Dim haibitdaucuoi As String = b(i).Substring(0, 1) +
b(i).Substring(5, 1)
Dim bonbitgiua As String = b(i).Substring(1, 4)
Dim srow = thapphan(haibitdaucuoi)
Dim scol = thapphan(bonbitgiua)
Dim sij As Integer = s(i).Rows(srow).Item(scol)
c += binary(sij, 4)
Next
Return hoanvi_p(c)
End Function
Hm i ra ch

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

'Function doirachu(ByVal y As String) As String


'Dim tam As String = y
'Dim tam1 As String = ""
'Dim so As Integer
'Dim i As Integer
'Dim j As Integer
'While i < tam.Length - 1
'so = 0
'For j = i To i + 7
'If tam.Substring(j, 1) = 1 Then
'so += 2 ^ (7 - (j - i))
'End If
'Next
'tam1 += Chr(so)
'i = i + 8
'End While
'Return tam1
'End Function
Function doirachu(ByVal y As String) As String
Dim tam As String = y
Dim tam1 As String = ""
Dim so As Integer
Dim i, j As Integer
While i < tam.Length - 1
so = 0
For j = i To i + 3
If tam.Substring(j, 1) = 1 Then
so += 2 ^ (3 - (j - i))
End If
Next
tam1 += chucai(so)

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

i=i+4
End While
Return tam1
End Function
Ch ci
Function chucai(ByVal so As Integer) As Char
Select Case so
Case 0
Return "0"
Case 1
Return "1"
Case 2
Return "2"
Case 3
Return "3"
Case 4
Return "4"
Case 5
Return "5"
Case 6
Return "6"
Case 7
Return "7"
Case 8
Return "8"
Case 9
Return "9"
Case 10
Return "A"
Case 11
Return "B"

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

Case 12
Return "C"
Case 13
Return "D"
Case 14
Return "E"
Case 15
Return "F"
End Select
End Function
Hm chuyn m asc
Function asc(ByVal a As Char)
Select Case a
Case "0"
asc = 0
Case "1"
asc = 1
Case "2"
asc = 2
Case "3"
asc = 3
Case "4"
asc = 4
Case "5"
asc = 5
Case "6"
asc = 6
Case "7"
asc = 7
Case "8"
asc = 8

NGO TH TUYET HA T012825

HE MA DES

O AN BAO MAT THONG TIN

HE MA DES

Case "9"
asc = 9
Case "A"
asc = 10
Case "B"
asc = 11
Case "C"
asc = 12
Case "D"
asc = 13
Case "E"
asc = 14
Case "F"
asc = 15
End Select
End Function
Hm chn kho
Sub chonkhoadung()
Dim i As Integer
Dim x As String = banro(0)
'For i = 0 To banro(0).Length - 1
'x += binary(asc(banro(0).Substring(i, 1)), hebit)
'Next
For i = 0 To 255
taodaykhoa(chuoikhoa(i))
Dim banma1 As String = doirachu(mahoa(x))
If banma1 = doirachu(banma(0)) Then
chuoikhoa(i) = chuoikhoa(i).Replace("#", "0")
txtkhoa.Text = doirachu(chuoikhoa(i))
Exit Sub
End If

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

HE MA DES

Next
MessageBox.Show("khong tim duoc khoa")
End Sub
Private Sub txtbanro_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles txtbanro.TextChanged
btthamma.Enabled = True
lbthongbao.Text = ""
End Sub
Private Sub txtbanma_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles txtbanma.TextChanged
btthamma.Enabled = True
lbthongbao.Text = ""
End Sub

End Class

NGO TH TUYET HA T012825

O AN BAO MAT THONG TIN

NGO TH TUYET HA T012825

HE MA DES

You might also like