You are on page 1of 29

Trng i hc Khoa hc T nhin TPHCM

Khoa Ton - Tin hc


B mn ng dng Tin hc
L thuyt m ha thng tin
Ti liu hng dn thc hnh
Version 1.0
Lu hnh ni b - 2010
Mc lc
Mc lc 3
1. Ngn ng lp trnh Python 5
1.1. Gii thiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Bin v kiu d liu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3. Php ton c bn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4. Biu thc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5. Cu trc iu khin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6. Chui k t v danh sch . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7. nh ngha hm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.8. Cc hm ton hc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2. Mt m c in 16
2.1. Tm tt l thuyt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2. Bi tp thc hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3. M i xng hin i v m cng khai 20
3.1. Tm tt l thuyt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2. Bi tp thc hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4. Hm bm mt m 23
4.1. Tm tt l thuyt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2. Bi tp thc hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2
3
5. H m logarit ri rc 25
5.1. Tm tt l thuyt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2. Bi tp thc hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6. Ch k in t 27
6.1. Tm tt l thuyt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.2. Bi tp thc hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Ti liu tham kho 30
Chng 1.
Ngn ng lp trnh Python
Trong chng ny sinh vin s c lm quen vi ngn ng lp trnh Python s
dng khi thc hnh cc bi tp ca mn hc S hc v thut ton. Ni dung ca
chng s gip sinh vin c th thc hin mt chng trnh n gin thng qua vic
gii thiu cc kin thc c bn v Python nh cc php ton s hc, cc kiu d liu,
cc cu trc iu khin... Sinh vin cn tm hiu thm cc ti liu khc ([?]) tra cu
cc hm cng nh cc gi hm phc v cho mc ch thc hnh ca mnh.
1.1. Gii thiu
Python l mt ngn ng lp trnh cp cao tng t nh cc ngn ng lp trnh khc
nh C, C++, Perl, Java... nhng l mt ngn ng thng dch. iu ny c ngha l mi
cu lnh s c trnh thng dch thc thi mt cch tun t khi chng trnh Python
c khi chy.
Trnh thng dch ca Python c 2 cch s dng, s dng ch tng tc (interactive
mode) v s dng ch kch bn (script mode). ch tng tc, cu lnh c
g v thc thi, kt qu s c in ra ngay sau :
>>> 1 + 1
2
Ngc li, ch kch bn, cc cu lnh c lu trong mt tp d liu gi l kch
bn (script) v s c thc thi mt ln.
python myscript.py
4
5
Trong c hai ch , k hiu # bo hiu mt dng ch thch.
>>> #Mac dinh la 60 giay
>>> _time = 60
1.2. Bin v kiu d liu
Trong ngn ng lp trnh Python, mt bin (variable) c khai bo v khi to thng
qua cu lnh gn.
>>> message = And now for something completely different
>>> n = 17
>>> pi = 3.1415926535897931
Tn bin bao gm cc k t ch, s v k hiu underscore (_). Tn bin khng c
bt u bng s v khng c trng vi cc t kha (keyword) ca Python (xem [?],
trang 11).
>>> 76trombones = big parade
SyntaxError: invalid syntax
>>> more@ = 1000000
SyntaxError: invalid syntax
>>> class = Advanced Theoretical Zymurgy
SyntaxError: invalid syntax
Mt khi c khai bo, bin s c mt kiu d liu c t ng xc nh bi Python.
Kiu d liu ca mt bin c th c nhn bit bng lnh type.
>>> type(message)
<type str>
>>> type(n)
<type int>
>>> type(pi)
<type float>
kim tra mt bin c mt kiu d liu c th no , Python cung cp lnh
isinstance.
6
>>> isinstance(message, str)
True
>>> isinstance(pi, int)
False
1.3. Php ton c bn
Python cung cp cc php ton s hc c bn nh cng (+), tr (-), nhn (*), chia
(/), ly tha (**), v php chia modulo (%).
>>> 20+32; hour-1; hour*60+minute; minute/60; 5**2; 9*(15-7);
Trong Python 2.0, php chia cc s nguyn cho kt qu l mt s nguyn, php chia
cc s thc s cho kt qu l cc s thc.
>>> minute = 59
>>> minute/60
0
>>> minute/60.0
0.98333333333333328
Ngoi ra cn c cc php ton so snh nh bng (==), khc (!=), ln hn (>), nh hn
(<), ln hn hoc bng (>=), v nh hn hoc bng (<=).
>>> x != y # x is not equal to y
>>> x > y # x is greater than y
>>> x < y # x is less than y
>>> x >= y # x is greater than or equal to y
>>> x <= y # x is less than or equal to y
Cui cng l cc php ton lun l bao gm and, or, v not. Mt s khc 0 c xem
l mt gi tr True trong cc php ton lun l ca Python.
>>> n = 9
>>> n % 2 == 0 or n % 3 == 0
True
>>> 17 and True
True
7
1.4. Biu thc
Biu thc l s kt hp gia cc gi tr, cc bin v cc php ton. Biu thc c th
ch gm mt gi tr, hoc mt bin, nhng khng th l mt php ton.
>>> 17
>>> x
>>> 17 + x
1.5. Cu trc iu khin
Cu trc iu kin c th n gin ch gm mt biu thc if, hoc gm nhiu cp
if-else khc nhau.
>>> if x > 0:
... print(x is positive)
>>> if x == y:
... print(x and y are equal)
... else:
... if x < y:
... print(x is less than y)
... else:
... print(x is greater than y)
Cu trc lp bao gm cc cu trc for v while.
>>> for i in range(4):
... print(Hello!)
>>> while True:
... print(x)
... y = (x + a/x) / 2
... if abs(y-x) < epsilon:
... break
... x = y
8
1.6. Chui k t v danh sch
1.6.1. Chui k t
Chui k t trong Python c th c xem nh l mt mng cc k t, c ch s bt
u t 0, v c gi tr hng s.
>>> fruit = banana
>>> print(fruit[1])
a
>>> fruit[1] = i
TypeError: object does not support item assignment
Cc thao tc trn chui k t: ni chui, tnh di, ly chui con.
>>> fruit[:3]
ban
>>> fruit[3:]
ana
>>> fruit[0:5:2] # the third index is the "step size"
bnn
>>> fruit = fruit + mango
>>> len(fruit)
11
Chuyn chui sang ch hoa bng th tc upper v tm kim trong chui bng th tc
find.
>>> word = banana
>>> new_word = word.upper()
>>> print(new_word)
BANANA
>>> new_word.find(NA)
2
>>> new_word.find(NA, 3) # start finding at 3
4
>>> new_word.find(B, 1, 4) # finding starts at 1 and ends at 4
-1
9
>>> a in word
True
>>> seed in word
False
Cc chui c th so snh vi nhau, trong , k t ch hoa c gi tr nh hn k t
ch thng.
>>> if word < banana:
... print Your word, + word + , comes before banana.
... elif word > banana:
... print Your word, + word + , comes after banana.
... else:
... print All right, bananas.
1.6.2. Danh sch
Danh sch l mt dy cc gi tr. Khng ging nh chui k t c cc gi tr l k t,
mt danh sch c th cha gi tr l bt k kiu no.
>>> [10, 20, 30, 40]
>>> [crunchy frog, ram bladder, lark vomit]
>>> [spam, 2.0, 5, [10, 20]]
>>> empty = []
Khng ging nh chui k t, cc gi tr bn trong mt danh sch c th c cp
nht v thay i ty .
>>> numbers = [17, 123]
>>> numbers[1] = 5
>>> print(numbers)
[17, 5]
>>> 5 in numbers
True
duyt qua cc phn t ca danh sch, chng ta c th s dng cu trc lp for.
>>> for x in numbers:
10
... print(x);
>>> for i in range(len(numbers)):
... numbers[i] = numbers[i] * 2
Cc php ton trn danh sch bao gm kt ni (+) v lp (*).
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a + b
>>> print c
[1, 2, 3, 4, 5, 6]
>>> [0] * 4
[0, 0, 0, 0]
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
Truy xut cc thnh phn ca danh sch thng qua cc ch s:
>>> t = [a, b, c, d, e, f]
>>> t[1:3]
[b, c]
>>> t[:4]
[a, b, c, d]
>>> t[3:]
[d, e, f]
>>> t[:]
[a, b, c, d, e, f]
>>> t[1:3] = [x, y]
>>> print(t)
[a, x, y, d, e, f]
Cc phng thc trn danh sch c ci t sn trong Python bao gm php thm
(append), sp xp (sort), xa phn t (pop, del, remove).
>>> # append a value or a list to current list
>>> t = [a, b, c]
>>> t.append(d)
>>> print(t)
11
[a, b, c, d]
>>> t1 = [a, b, c]
>>> t2 = [d, e]
>>> t1.extend(t2)
>>> print(t1)
[a, b, c, d, e]
>>> # sort a list
>>> t = [d, c, e, b, a]
>>> t.sort()
>>> print(t)
[a, b, c, d, e]
>>> # delete some items from a list
>>> t = [a, b, c]
>>> x = t.pop(1)
>>> print(t)
[a, c]
>>> print(x)
b
>>> t = [a, b, c]
>>> t.remove(b)
>>> print(t)
[a, c]
>>> t = [a, b, c, d, e, f]
>>> del t[1:5]
>>> print(t)
[a, f]
1.6.3. Lin h gia chui v danh sch
Cc php ton chuyn i gia chui v danh sch:
Chuyn mt chui k t thnh mt danh sch
>>> s = spam
>>> t = list(s)
>>> print(t)
[s, p, a, m]
12
Chuyn mt cu thnh danh sch cc t
>>> s = pining for the fjords
>>> t = s.split()
>>> print(t)
[pining, for, the, fjords]
>>> s = spam-spam-spam
>>> delimiter = -
>>> s.split(delimiter)
[spam, spam, spam]
Kt hp cc thnh phn ca danh sch thnh mt chui k t
>>> t = [pining, for, the, fjords]
>>> delimiter =
>>> delimiter.join(t)
pining for the fjords
1.6.4. S khc nhau gia chui v danh sch
Do cc thnh phn ca mt chui khng th b thay i, nn cc chui ging nhau s
c tham chiu n cng mt object.
>>> a = banana
>>> b = banana
>>> a is b
True
Ngc li, cc thnh phn ca danh sch c th c thay i bt k lc no, nn mt
danh sch s tham chiu n mt object ring.
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
Tuy nhin nu gn mt danh sch cho mt bin khc, th chng s cng tham chiu
n mt object.
13
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b[0] = 17
>>> print(a)
[17, 2, 3]
1.7. nh ngha hm
nh ngha mt hm, ta dng t kha def, dng t kha return xc nh gi
tr tr v ca hm.
>>> def absolute_value(x):
... if x < 0:
... return -x
... else:
... return x
>>> def distance(x1, y1, x2, y2):
... dx = x2 - x1
... dy = y2 - y1
... dsquared = dx**2 + dy**2
... result = math.sqrt(dsquared)
... return result
Hm trong Python cng cho php quy nh cc ngn ng lp trnh khc.
>>> def factorial(n):
... if n == 0:
... return 1
... else:
... recurse = factorial(n-1)
... result = n * recurse
... return result
Chng ta c th kim tra cc tham s u vo ca mt hm l hp l trc khi thc
hin cc tnh ton.
14
>>> def factorial (n):
... if not isinstance(n, int):
... print Factorial is only defined for integers.
... return None
... elif n < 0:
... print Factorial is only defined for positive integers.
... return None
... elif n == 0:
... return 1
... else:
... return n * factorial(n-1)
1.8. Cc hm ton hc
Python cung cp mt s hm ton hc c bn cho ngi s dng, nh ly tha, ly
cn, logarit, ... Chng ta c th s dng kim tra tnh chnh xc ca cc kt qu
tnh ton ca mnh.
Trc tin chng ta cn khai bo th vin ton hc
>>> import math
Sau ta c th thc hin cc php ton
>>> math.sqrt(2) / 2.0
0.707106781187
>>> radians = 0.7
>>> height = math.sin(radians)
>>> ratio = signal_power / noise_power
>>> decibels = 10 * math.log10(ratio)
>>> x = math.sin(degrees / 360.0 * 2 * math.pi)
>>> x = math.exp(math.log(x+1))
>>> e = math.exp(1.0)
>>> height = radius * math.sin(radians)
Chng 2.
Mt m c in
2.1. Tm tt l thuyt
2.1.1. M dch chuyn - Shift Cipher
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
nh ngha 1. t { = ( = / = Z
26
. Vi mi 0 K 25 v vi x, y Z
26
, m
dch chuyn c nh ngha nh sau:
c
K
(x) = (x + K) mod 26
T
K
(y) = (y K) mod 26
2.1.2. M thay th - Substitution Cipher
nh ngha 2. Cho l mt song nh t tp cc k t thng vo tp cc k t hoa:
: a /
a A
Khi vi x a v y /, m thay th c nh ngha nh sau:
c

(x) = (x), T

(y) =
1
(y)
15
16
V d 1. Kha b mt ca mt m thay th cho bi bng sau:

A B C D E F G H I J K L M
d l r y v o h e z x w p t
N O P Q R S T U V W X Y Z
b g f j q n m u s k a c i

1
a b c d e f g h i j k l m
X N Y A H P O G Z Q W B T
n o p q r s t u v w x y z
S F L R C V M U E K J D I
2.1.3. M Affine
nh ngha 3. t { = ( = Z
26
v
/ = (a, b) Z
2
26
: gcd(a, 26) = 1
Vi mi kha K = (a, b) / v vi x, y Z
26
, m Affine c nh ngha nh sau:
c
K
(x) = (ax + b) mod 26
T
K
(y) = a
1
(y b) mod 26
2.1.4. M Vigenre
nh ngha 4. Chn m l mt s nguyn dng. t { = ( = / = (Z
26
)
m
. Vi mi
kha K = (k
1
, k
2
, ..., k
m
) / v vi x = (x
1
, x
2
, ..., x
m
) {, y = (y
1
, y
2
, ..., y
m
) (,
m Vigenre c nh ngha nh sau:
c
K
(x) = (x
1
+ k
1
, x
2
+ k
2
, ..., x
m
+ k
m
) mod 26
T
K
(y) = (y
1
k
1
, y
2
k
2
, ..., y
m
k
m
) mod 26
17
2.1.5. M Hill
nh ngha 5. Chn m 2. t { = ( = (Z
26
)
m
v
/ = M
mm

m
(Z
26
) : det (M) = 0
Khi vi mi kha K / v x {, y (, m Hill c nh ngha nh sau:
c
K
(x) = xK (mod 26)
T
K
(y) = yK
1
(mod 26)
2.1.6. M chuyn v - Permutation Cipher
nh ngha 6. Chn m l mt s nguyn dng. t { = ( = (Z
26
)
m
v / l tp
cc hon v m phn t 1, ..., m. Khi vi mi kha K l mt hon v m phn t v
x {, y (, m hon v c nh ngha nh sau:
c
K
(x) = c
K
(x
1
, ..., x
m
) = (x
K(1)
, ..., x
K(m)
)
T
K
(y) = T
K
(y
1
, ..., y
m
) = (y
K
1
(1)
, ..., y
K
1
(m)
)
V d 2. Vi m = 6, ta c mt kha l hon v sau:
x 1 2 3 4 5 6
(x) 3 5 1 6 4 2

1
(x) 3 6 1 5 2 4
2.2. Bi tp thc hnh
Bi tp 1. Vit hm tnh m c
sh(k)
v gii m T
sh(k)
dch chuyn da trn kha k cho
trc l mt s nguyn khng m khng qu 25.
Bi tp 2. Mt ngi tm cch nng cao tnh an ton cho vn bn m ha ca mnh.
Anh ta ngh ra mt kha l mt s nguyn dng c n ch s k = k
1
k
2
...k
n
vi k
i
l
cc ch s thp phn, sau anh ta m ha vn bn p ca mnh nh sau: E
k
(p) =
c
sh(k
1
)
(c
sh(k
2
)
(...(c
sh(kn)
(p)...)), bit c
sh(k
i
)
(x) l hm m ha dch chuyn c kha k
i
.
1. Vit hm tnh m v gii m cho phng php m ha ny.
2. Nhn xt v tnh an ton ca phng php ny so vi m dch chuyn gc.
18
3. Nhng iu kin no ca k lm cho E
k
(p) = p?
Bi tp 3. Vit hm tnh m c
s()
v gii m T
s()
thay th da trn kha trong v
d 1 trn.
Bi tp 4. Mt ngi s dng hm c
s()
m ha vn bn p ca mnh nh sau:
E

= c
s()
(c
s()
(p)).
1. Hy nhn xt v kt qu m ha c nhn c.
2. Th cho mt kha khc E

khng gp phi vn nh kha .


Bi tp 5. Vit hm tnh m c
a(K)
v gii m T
a(K)
Affine da trn kha K Z
2
26
.
Bi tp 6. Mt ngi m ha vn bn p ca mnh vi kha K = (k
1
, k
2
) Z
2
26
theo
phng php sau: E
K
(p) = c
a(K)
(c
sh(k
1
)
(c
sh(k
2
)
(p))). Hy vit hm tnh m v gii m
cho phng php ny.
Bi tp 7. Mt ngi m ha vn bn p ca mnh vi kha K = (k
1
, k
2
) Z
2
26
theo
phng php sau: K

= (k
1
, 2c
sh(k
2
)
(p)) v E
K
(p) = c
a(K

)
(p). Hy vit hm tnh m
v gii m cho phng php ny.
Bi tp 8. Vit hm tnh m c
v(K)
v gii m T
v(K)
Vigenre da trn kha K Z
m
26
.
Bi tp 9. Mt ngi m ha vn bn p chiu di m ca mnh vi kha K = Z
m
26
theo phng php sau: p

= (c
a((11,k
1
))
(p
1
), c
a((11,k
2
))
(p
2
), ..., c
a((3,km))
(p
m
)) v E
K
(p) =
c
v(K)
(p

). Hy vit hm tnh m v gii m cho phng php ny.


Bi tp 10. Vit hm tnh m c
h(K)
v gii m T
h(K)
Hill da trn kha K
m
(Z
26
)
v K kh nghch trn Z
26
.
Bi tp 11. Mt ngi m ha vn bn p chiu di m ca mnh vi kha K
m
(Z
26
)
(K kh nghch trn Z
26
) theo phng php sau: E
K
(p) = c
h(K)
(c
h(K
T
)
(p)). Hy vit
hm tnh m v gii m cho phng php ny.
Bi tp 12. Vit hm tnh m c
p()
v gii m T
p()
chuyn v da trn kha trong
v d 2 trn.
Chng 3.
M i xng hin i v m cng
khai
3.1. Tm tt l thuyt
3.1.1. M lp
Mt h m lp tiu biu bao gm hm lp song nh g v tp r kha K
1
, K
2
, ..., K
r
, khi
vic m ha mt vn bn p c thc hin qua r vng lp:
c = w
r
w
i
= g(w
i1
, K
i
), 1 i r
w
0
= p
Vic gii m c cng c thc hin qua r bc lp:
p = w
0
w
i1
= g
1
(w
i
, K
i
), 1 i r
w
r
= c
3.1.2. M DES
M DES l mt m lp 16 vng m ha mt vn bn p di 64 bit vi mt kha di 56
bit. mi vng, trng thi w
i
c chia lm hai phn di 32 bit l L
i
v R
i
. Kha K
i
mi ln lp di 48 bit l mt kha c sinh ra t kha K ban u. Vic m ha
c tin hnh nh sau:
19
20
c = IP
1
(R
16
, L
16
)
w
i
= (L
i
, R
i
) = g(L
i1
, R
i1
, K
i
) = (R
i1
, L
i1
f(R
i1
, K
i
))
w
0
= (L
0
, R
0
) = IP(x)
Vic gii m c thc hin tng t vi hm g
1
cho bi cng thc (L
i1
, R
i1
) =
g
1
(L
i
, R
i
, K
i
) = (R
i
f(L
i
, K
i
), L
i
).
3.1.3. M AES
M AES l mt m lp m ha mt vn bn p di 128 bit vi kha K c chiu di 128,
192, hoc 256 bit. S vng lp ca AES ph thuc vo chiu di ca kha K, tng
ng l 10, 12, hoc 14 vng.
3.1.4. H m RSA
Chn n = pq vi p, q l cc s nguyn t. t { = ( = Z
n
v
/ = (n, p, q, a, b) : a b mod n
Vi K = (n, p, q, a, b) / v x, y Z
n
, hm m ha v gii m RSA c nh ngha
nh sau:
c
K
(x) = x
b
mod n
T
K
(y) = y
a
mod n
Khi (n, b) c gi l kha cng khai, (p, q, a) c gi l kha b mt.
3.2. Bi tp thc hnh
Bi tp 13. Hy xut v ci t thut ton cho hm song nh mt chui k t c
chiu di bt k v mt chui bit.
Bi tp 14. Hy xut v ci t thut ton cho hm song nh mt chui bit c
chiu di bt k thnh mt chui bit (ngn nht) c chiu di l bi s ca n cho trc.
(Padding)
Bi tp 15. Hy ci t thut ton DES m ha v gii m mt chui bit di 64
bit.
21
Bi tp 16. Hy ci t thut ton DES m ha v gii m mt chui bit di bt
k.
Bi tp 17. Hy ci t thut ton DES m ha v gii m mt chui k t c
chiu di bt k.
Bi tp 18. Hy ci t thut ton AES m ha v gii m mt chui bit di 64
bit.
Bi tp 19. Hy ci t thut ton AES m ha v gii m mt chui bit di bt
k.
Bi tp 20. Hy ci t thut ton AES m ha v gii m mt chui k t c
chiu di bt k.
Bi tp 21. Chn hai s nguyn t p, q v n = pq. Vit hm tnh kha b mt a t
kha cng khai b cho trc.
Bi tp 22. Vit hm m ha RSA mt vn bn m vi kha cng khai l (n, b) cho
trc.
Bi tp 23. Vit hm gii m RSA mt on m c vi kha b mt l (p, q, a) cho
trc.
Bi tp 24. Vit hm thm m RSA mt on m c vi kha cng khai l (n, b) cho
trc.
Chng 4.
Hm bm mt m
4.1. Tm tt l thuyt
Hm bm hiu theo ngha n gin l hm cho tng ng mt mng d liu ln vi
mt mng d liu nh hn. Cc hm bm nhn mt chui bit m, gi l mt thng ip
(message), c chiu di ty (hu hn) lm d liu u vo v to ra mt chui bit
d c chiu di c nh n > 0 gi l m bm (hash code hay message digest).
Nu k hiu D l min xc nh (u vo) v R l min gi tr (u ra) ca hm bm
h(m), ta nhn thy s lng phn t ca D thng ln hn rt nhiu so vi s lng
phn t trong R (v chiu di thng ip u vo l ty v thng ln hn n). Do
h(m) khng c tnh cht n nh, ngha l lun tn ti nhng thng ip u vo
c cng mt m bm, cc thng ip ny gi l cc xung t (collision). Tuy nhin
nu vi n ln th xc xut tm ra mt xung t l rt kh v mt rt nhiu thi
gian.
nh ngha 7. Hm bm h l mt hm tha hai tnh cht sau:
Tnh nn (Compression): h cho tng ng mt thng ip u vo m c di
bt k thnh mt m bm d = h(m) c chiu di c nh n.
D tnh ton (Ease of computation): Vi mi thng ip u vo m c chiu di
hu hn ty , m bm h(m) c th c tnh ton mt cch d dng.
nh ngha 8. Hm bm mt m h l hm bm c cc tnh cht sau:
Tnh khng tin nh (pre-image resistance): vi mi m bm cho trc, kh c
th tnh ton tm c mt thng ip tng ng vi m bm . Ngha l, vi
mi d cho trc, kh c th tm c m sao cho h(m) = d.
22
23
Tnh khng tin nh th hai (second pre-image resistance): vi mi thng ip
cho trc, kh c th tnh ton tm c mt thng ip khc c cng m bm
vi thng ip ban u. Ngha l, vi mi thng ip m cho trc, kh c th tm
c thng ip m

= m sao cho h(m) = h(m

).
Tnh khng xung t (collision resistance): kh c th tnh ton tm c hai
thng ip khc nhau m c cng m bm. Ngha l, kh c th tm c m = m

sao cho h(m) = h(m

).
Ch . Thut ng "kh c th tnh ton" y c ngha phc tp ca vic tnh
ton l trn a thc, hoc i hi ti nguyn vt qu kh nng cung cp. C th ta
c nh ngha sau:
4.2. Bi tp thc hnh
Bi tp 25. Ci t thut ton Merkle Damg ard nh x mt chui bit c chiu di
bt k (nhng nh hn 2
128
, 2
256
, 2
512
) thnh mt chui bit c chiu di l bi s ca
n = 128, 256, 512.
Bi tp 26. Hy xut v ci t thut ton nh x mt chui bit c chiu di bt
k thnh mt chui bit c chiu di l bi s ca 32.
Bi tp 27. Ci t thut ton padding cho hm bm SHA-1.
Bi tp 28. Ci t thut ton SHA-1 bm mt chui k t c chiu di bt k
thnh mt chui bit c chiu di 160 bit.
Bi tp 29. Ci t thut ton MD5 bm mt chui k t c chiu di bt k thnh
mt chui bit c chiu di 128 bit.
Chng 5.
H m logarit ri rc
5.1. Tm tt l thuyt
5.1.1. Bi ton logarit ri rc
Cho nhm nhn (G, ), mt phn t G c bc n v phn t '`. Tm s nguyn
duy nht a, 0 a n 1, sao cho

a
=
5.1.2. H m ElGamal
Chn p l mt s nguyn t sao cho bi ton logarit ri rc trn Z

p
khng th gii
d dng, v t Z

p
l mt phn t nguyn thy (phn t sinh). t { = Z

p
,
( = Z

p
Z

p
, v
/ = (p, , a, ) :
a
(mod p)
Khi b (p, , ) c cng khai v s a c gi b mt.
Vi K = (p, , a, ), v mt s ngu nhin b mt k Z
p1
, vic m ha v gii m
theo h ElGamal c thc hin nh sau:
c = c
K
(p, k) = (y
1
, y
2
) Z

p
Z

p
trong
y
1
=
k
mod p
y
2
= c
k
mod p
24
25
p = T
K
(y
1
, y
2
) = y
2
(y
a
1
)
1
mod p
5.2. Bi tp thc hnh
Bi tp 30. Ci t thut ton Pohlig-Hellman gii bi ton logarit ri rc.
Bi tp 31. Ci t thut ton Sharks gii bi ton logarit ri rc.
Bi tp 32. Ci t thut ton Pollard Rho gii bi ton logarit ri rc.
Bi tp 33. Ci t thut ton tm mt phn t nguyn thy (phn t sinh) ca Z

p
.
Bi tp 34. Ci t thut ton ElGamal m ha v gii m mt chui k t c
chiu di bt k.
Chng 6.
Ch k in t
6.1. Tm tt l thuyt
6.1.1. Ch k in t s dng h m RSA
Chn n = pq vi p, q l cc s nguyn t. t { = / = Z
n
v
/ = (n, p, q, a, b) : a b mod n
(n, b) c cng khai, (p, q, a) c gi b mt. Khi vi K = (n, p, q, a, b) / v
x, y Z
n
, vic k v kim tra ch k in t c thc hin nh sau:
sig
K
(x) = x
a
mod n
ver
K
(y) = true x y
b
mod n
6.1.2. Ch k ElGamal
Chn p l mt s nguyn t sao cho bi ton logarit ri rc trn Z
p
khng th gii d
dng (trit tiu, suy bin). t Z

p
l mt phn t nguyn thy (phn t sinh), v
{ = Z

p
, / = Z

p
Z
p1
. Ta nh ngha
/ = (p, , a, ) :
a
(mod p)
B (p, , ) c cng khai, s a c gi b mt. Khi vi mt kha K = (p, , a, )
v mt s ngu nhin (b mt) k Z

p1
, vic k v kim tra ch k in t ElGamal
c thc hin nh sau:
26
27
Ch k in t
sig
K
(x, k) = (, )
trong
=
k
mod p
= (x a)k
1
mod (p 1)
Kim tra ch k: vi x, Z

p
v Z
p1
,
ver
K
(x, (, )) = true

delta

x
(mod p)
6.1.3. Ch k in t da trn hm bm SHA-1
Chn p l mt s nguyn t L-bit sao cho bi ton logarit ri rc trn Z
p
khng th
gii d dng (trit tiu, suy bin) v L 0 (mod 64) v 512 L 1024, v chn q l
mt s nguyn t 160-bit l c s ca p 1. t Z

p
l mt cn bc q ca n v
theo modulo p, v t { = 0, 1

, / = Z

q
Z

q
. Ta nh ngha
/ = (p, q, , a, ) :
a
(mod p)
trong 0 a q 1. B (p, q, , ) c cng khai v a c gi b mt.
Vi K = (p, q, , a, ) v mt s ngu nhin (b mt) k sao cho 1 k q 1, vic k
v kim tra ch k in t da trn hm bm SHA-1 c thc hin nh sau:
Ch k in t
sig
K
(x, k) = (, )
trong
= (a
k
mod p) mod q
= (SHA1(x) + a)k
1
mod q
, khng ng thi bng 0.
Kim tra ch k: vi x 0, 1

v , Z

q
,
ver
K
(x, 9, )) = true (
e
1

e
2
mod p) mod q =
trong
28
e
1
= SHA1(x)
1
mod q
e
2
=
1
mod q
6.2. Bi tp thc hnh
Bi tp 35. Ci t chng trnh tnh ch k in t v kim tra ch k in t da
trn thut ton RSA.
Bi tp 36. Ci t chng trnh tnh ch k in t v kim tra ch k in t
ElGamal.
Bi tp 37. Ci t chng trnh tnh ch k in t v kim tra ch k in t da
trn hm bm SHA-1.
Bi tp 38. Ci t chng trnh tnh ch k in t v kim tra ch k in t da
trn hm bm MD5.
Ti liu tham kho
[1] Douglas R. Stinson, Cryptography: Theory and Practice, 3rd. ed., Chapman &
Hall/CRC, 2006.
[2] A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied Cryptography,
CRC Press, 1996.
[3] Phm Huy in, H Huy Khoi, M ho thng tin: C s ton hc v ng dng,
NXB HQG H Ni, 2003.
29

You might also like