Tải bản đầy đủ (.pdf) (36 trang)

Tóm tắt luận văn Thạc sĩ Toán học: Một số thuật toán trong số học ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (855.21 KB, 36 trang )

B ăGIÁOăD CăVÀă ÀOăT O
TR
NGă IăH CăTH NGăLONG

NGUY NăTH ăTHANHăHUY N

M TăS ăTHU TăTỐNăTRONG S ăH Că NGăD NG

TĨMăT TăLU NăV NăTH CăS ăTỐNăH C

Chun ngành: Ph ng pháp tốn s c p
Mã s : 8 46 01 13

HÀăN I,ă2018


Cơng trình đ căhồnăthànhăt i:
Tr ngăđ iăh căTh ngăLong

NG

IăH

NGăD NăKHOAăH C

GS TSKH HÀ HUY KHOÁI

Ph năbi nă1:
Ph năbi nă2:

Lu n v n đ



c b o v tr
Tr

c H i đ ng ch m lu n v n t i:

ng đ i h c Th ng Long

Vào h i 09 gi 00 ngày 28 tháng 12 n m 2018


Contents

Trang

M đầu

1

Ch

ng 1 Thuật toán và t duy thuật toán
1.1 Thuật toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Đ ph c tạp c a thuật toán . . . . . . . . . . . . . . . . . . . . .
1.3 T duy thuật toán . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
2
3


Ch

ng 2 M t s thuật toán s h c th ng d ng
2.1 Ki n th c c bản . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 T nh chia h t . . . . . . . . . . . . . . . . . . . . .
2.1.2 S nguy n t . . . . . . . . . . . . . . . . . . . . .
2.1.3 Đ ng d . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4 H thặng d và l p thặng d . . . . . . . . . . . .
2.1.5 Phân s li n t c . . . . . . . . . . . . . . . . . . .
2.2 M t s thuật toán t m c chung l n nhất . . . . . . . . .
2.2.1 Thuật toán Euclid . . . . . . . . . . . . . . . . . .
2.2.2 Thuật toán J.Stein . . . . . . . . . . . . . . . . . .
2.2.3 Thuật toán Euclid m r ng . . . . . . . . . . . . .
2.2.4 Đ nh l Fermat nh . . . . . . . . . . . . . . . . .
2.3 M t s thuật toán phân t ch s nguy n thành t ch các th
nguy n t đặc bi t . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Phân t ch s nguy n bằng sàng Erathostenes . . .
2.3.2 Pollard s rho method . . . . . . . . . . . . . . . . .
2.3.3 Đ ng cong Eliptic . . . . . . . . . . . . . . . . . .
2.3.4 Ph ng pháp c a Fermat . . . . . . . . . . . . . .
2.3.5 Ph ng pháp Squfof . . . . . . . . . . . . . . . . .
2.3.6 Thuật toán Dixon . . . . . . . . . . . . . . . . . .
2.3.7 Thuật toán Sàng bậc hai-Quadratic Sieve . . . . .

.
.
.
.
.

.
.
.
.
.
.

4
4
4
5
5
6
6
7
7
7
7
9

.
.
.
.
.
.
.
.

11

11
11
13
15
16
16
17

iii

. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
as
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .



Ch

ng 3 H mã kh a RSA, ch k s và hàm băm
3.1 H mã h a RSA . . . . . . . . . . . . . . . . . . . . .
3.2 Tạo kh a, mã h a, giải mã c a h RSA . . . . . . .
3.3 Ch k đi n t -Ch k s . . . . . . . . . . . . . . .
3.4 Hàm băm . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 Ph ng th c mã h a MD5 . . . . . . . . . .
3.4.2 Ph ng th c mã h a SHA1 . . . . . . . . . .

mật
. . .
. . .
. . .
. . .
. . .
. . .


. . .
. . .
. . .
. . .
. . .
. . .

.
.

.
.
.
.

19
19
19
20
21
21
25

K t luận

31

Tài li u tham khảo

32

iv


M đầu
S h c là m t m n khoa h c l th , hấp dẫn nh ng ng i h c và làm toán,
các giáo vi n, h c sinh tr n khắp th gi i. Mặc d khoa h c k thuật ngày
nay rất phát tri n nh ng c nh ng bài toán t th i c đại vẫn c n giá tr đ n
tận bây gi và vi c đi t m m t thuật toán phân t ch s nguy n ra t ch các th a
s nguy n t là m t trong nh ng thuật toán nh vậy. Ch nh nh đ kh c a

vi c phân t ch s nguy n thành t ch các th a s nguy n t đã là c s cho s
ra đ i c a mật mã h c.
Luận văn này tr nh bày m t s thuật toán s h c và ng d ng. Thuật
toán phân t ch m t s nguy n ra các th a s nguy n t bắt đầu t sàng
Eratosthennes, ph ng pháp RHO c a Pollard, phân t ch Fermat, ph ng
pháp Squfof, thuật toán Dixon, thuật toán sàng bậc hai. Luận văn đ c chia
làm ba ch ng:
1. Ch ng 1: Thuật toán và t duy thuật toán tr nh bày nh ng khái ni m
c bản v thuật toán, đ ph c tạp và t duy thuật toán.
2. Ch ng 2: M t s thuật toán th ng d ng tr nh bày m t s ki n th c c
bản v m t s thuật toán s h c th ng d ng.
3. Ch ng 3: H mã kh a RSA và ch k s tr nh bày m t s ng d ng
c a thuật toán phân t ch s nguy n thành t ch các th a s nguy n t vào
mật mã và tạo ch k s .

1


Ch

ng 1

Thuật toán và t

duy thuật toán

Ch ng này tr nh bày nh ng khái ni m c bản v thuật toán, đ ph c tạp
và t duy thuật toán. N i dung c a ch ng này đ c h nh thành t tài li u
[1].


1.1

Thuật toán

Đ nh ngh a 1.1. Thuật toán là m t quy tắc, thao tác đ v i nh ng d li u
ban đầu đã cho, ta t m đ c l i giải cho bài toán sau m t khoảng th i gian h u
hạn.
Trong thuật toán cần c :
Đầu vào: input.
Đầu ra: output.
Thuật toán phải bao g m nhi u b

c và phải th a mãn y u cầu sau:

1. T nh h u hạn
2. T nh xác đ nh
3. T nh hi u quả
4. T nh ph d ng

1.2
Đ

Đ ph c tạp c a thuật toán
cl

ng đ ph c tạp c a thuật toán, ta d ng kh a ni m bậc O-l n

Đ nh ngh a 1.2. Giả s f(n) và g(n) là hai hàm xác đ nh tr n tập h p các s
nguy n d ng. Ta n i f(n)c bậc O-l n c a g(n) và vi t: f(n)= O(g(n)) hoặc
f=O(g), n u t n tại s C ̸= 0, sao cho v i n đ l n, các hàm f(n) và g(n) đ u

d

f (n)
= C.
n→+∞ g(n)

ng và lim

2


N u thuật toán c th i gian th c hi n f(n) = O(g(n)) ta n i th i gian th c
hi n là cấp g(n).
Ch ng ta cần l u th m m t đi m sau đây. Trong th c t ch ng ta c n
nhắc đ n thuật toán xác suất t c là thuật toán ph thu c vào m t hay
nhi u tham s ngẫu nhi n. Nh ng thuật toán này, v nguy n tắc kh ng
đ c g i là thuật toán, v ch ng c th , v i xác suất quá bé, kh ng bao gi
k t th c. Tuy nhi n, th c nghi m ch ra rằng, các thuật toán xác suất th ng
h u hi u h n các thuật toán tất đ nh. Thậm ch , trong rất nhi u tr ng
h p, ch c các thuật toán nh th là s d ng đ c. Ta đ nh ngh a th m:
Lx [u; v] = exp(v(lnx)u .(lnlnx)1−u ). Trong su t luận văn hàm Ln đ c d ng đ
t nh th i gian chạy.
Ta c : Ln [0; v] = exp(v(lnlnn)) = (lnn)v và Ln [1; v] = exp(v(lnn)) = nv . Th i
gian chạy Ln [u, v] v i u < 0 và v là hằng s là th i gian m (subexponential
time.)

1.3

T duy thuật toán


T duy thuật toán là s t ng h p các năng l c t duy đ giải quy t vấn đ
theo m t quy tr nh xác đ nh h ng đ n m t tác nhân t ng th ch (tác nhân
đây mu n n i là con ng i, máy t nh, hay bất c m t thi t b nào c ch c
năng t nh toán t đ ng c th hi u và th c hi n đ c thuật toán).
T duy thuật toán lu n đ nh h ng vào vi c m ra m t con đ ng l n, m t
giải pháp vạn năng cho vi c giải quy t hàng loạt vấn đ . T duy thuật toán
gi p làm thay đ i quan đi m nh n nhận vấn đ và thay đ i th i quen làm toán
cho h c sinh thay v làm theo m o m c bi n đ i th s làm toán theo c bản
và c t nh ng d ng r ng rãi, t ng quát cho nhi u tr ng h p.
Thuật toán c các đặc đi m[1]:
Đ là m t dãy h u hạn các b c sắp x p theo m t tr nh t nhất đ nh
M i b c là m t thao tác s cấp, tr ng h p đặc bi t c ng c th là m t
thuật toán đã bi t. Các b c r ràng, thao tác ch nh xác (trong c ng m t đi u
ki n, hai b x l c ng th c hi n m t thuật toán th phải cho ra c ng m t k t
quả).
C t nh k t th c T duy thuật toán là cách suy ngh đ nhận th c, đ giải
quy t vấn đ m t cách c tr nh t (sắp x p lần l t, th t tr c sau).[1]

3


Ch

ng 2

M t s thuật toán s h c th ng
d ng
Ch ng này tr nh bày nh ng ki n th c c bản c a s h c và m t s thuật
toán s h c th ng d ng. N i dung c a ch ng này c bản đ c h nh thành t
các tài li u [2] và [3].


2.1

Ki n th c c bản

M c này tr nh bày m t s khái ni m c bản s h c nh t nh chia h t, s
nguy n t , đ ng d , thặng d , ... cần thi t cho n i dung c a luận văn.

2.1.1 T nh chia h t
Đ nh ngh a 2.1. Ch ng ta k hi u: N: tập h p c a các s t nhi n.
Z+ = {0, 1, ...}: tập các s nguy n kh ng âm.
Z: tập các s nguy n.
Q: tập các s h u t .
R, R1 : tập các s th c.
Đ nh ngh a 2.2. V i hai s nguy n a, b, a ̸= 0 ta n i a chia h t b đ i v i s
nguy n c nào đ , n u b = ac và k hi u a|b. Ta c ng n i b chia h t cho a, hay
.
là b i c a a và vi t b..a.
Đ nh l 2.1. V i m i s nguy n d
kh ng âm (q, r) sao cho:

ng a, b t n tại duy nhất cặp s nguy n

b = aq + r, r < a.

Đ nh ngh a 2.3. Trong đ nh l tr n, khi a là s chia h t b th s q đ c g i là
th ng(quotient). S r đ c g i là s d (remainder).

4



Nhận xét 2.1. Thuật toán chia c th m r ng ra tập s nguy n Z nh sau.
V i m i s nguy n a, b, a ̸= 0, t n tại duy nhất cặp s nguy n (q, r) ∈ Z × Z,
sao cho
b = aq + r,

0 ≤ r < |a|.

2.1.2 S nguy n t
Đ nh ngh a 2.4. S nguy n t là s nguy n l n h n 1, kh ng chia h t cho s
nguy n d ng nào ngoài 1 và ch nh n . S nguy n l n h n 1 kh ng phải s
nguy n t đ c g i là h p s .
Các t nh chất c a s nguy n t :
Đ nh l 2.2. (Euclid)
i) 2 là s nguy n t nh nhất và là s chẵn duy nhất.
ii) S các s nguy n t là v hạn.


Đ nh l 2.3. M i h p s n đ u c

c nguy n t kh ng v

V i m i s th c d ng x cho tr
kh ng v t quá x. Khi đ , ta c :

c, ta k hi u π(x) là s các s nguy n t

Đ nh l 2.4. lim

n→+∞


π(x)
x
logx

t quá

n.

=1

Nh vậy, s các s nguy n t kh ng v

t quá



n là vào khoảng


n

log n

=


2 n
logn .


Đ nh l 2.5. M i s nguy n t l n h n 1 đ u phân t ch đ c m t cách duy
nhất thành t ch các th a s nguy n t , trong đ , các th a s vi t v i th t
kh ng giảm.

2.1.3 Đ ng d
Trong phần này ch ng ta hi u các ch k hi u thay s là các s nguy n.
Đ nh ngh a 2.5. Giả s n là m t s nguy n d ng. Ta n i, hai s nguy n
a, b là đ ng d v i nhau theo modulo n n u a − b chia h t cho n và k hi u

a ≡ b(mod n).

H th c tr n g i là đ ng d th c. Nh vậy, a ≡ b(mod n) khi và ch khi t n
tại s nguy n k, sao cho: a = b + kn. N u a ̸≡ b(mod n) c ngh a là a − b kh ng
chia h t cho n.
.
Đ nh ngh a 2.6. N u a ≡ 0(mod n) th ta n i a chia h t cho n và k hi u a..n.
Ch ng ta c ng n i n là c c a a.
c chung l n nhất c a hai s a, b đ c k
hi u là gcd(a, b).
5


Đ nh ngh a 2.7. (Nguy n t c ng nhau). Hai s nguy n a, b đ c g i là
nguy n t c ng nhau n u gcd(a, b) là 1.
Đ nh ngh a 2.8. (Phần t ngh ch đảo). N u hai s nguy n a và n nguy n t
c ng nhau, t n tại s nguy n x sao cho: a.x ≡ 1(mod n) th ta g i x là phần t
ngh ch đảo c a a trong phép modulo cho n và k hi u là a−1 .

2.1.4 H thặng d và l p thặng d
Đ nh ngh a 2.9. Giả s m và r là s t nhi n và 0 ≤ r ≤ m − 1. K hi u Ar

là tập h p tất cả các s nguy n đ ng d v i r theo modulo m và đ c g i là l p
thặng d modulo m. M i phần t c a Ar đ c g i là m t thặng d modulo m.

2.1.5 Phân s li n t c
Đ nh ngh a 2.10. Cho a, b là các s nguy n, b > 0. Th c hi n thuật toán
Euclid ta đ c:
a = ba0 ,

0 ≤ c0 < b

b = c 0 a1 + c 1 ,
···

0 ≤ c1 < c 0

cn−3 = cn−2 an−1 + cn−1 ,
cn−2 = cn−1 an .

Nh vậy, phân s
a
b

= a0 +

c0
b

= a0 +

a

b
1
b
c0

0 ≤ cn−1 < cn−2 ,

c th vi t:
= · · · = a0 +

1
a1 +

1
···+an−1 + a1
n

Cách vi t tr n đ c g i là bi u di n s h u t

.
a
b

d

i dạng phân s li n t c.

Ch ng ta quan tâm đ n các đ nh l sau(phần ch ng minh xem [1])
Đ nh l 2.6. Giả s a0 , a1 , · · · , an , · · · là các s th c, trong đ a1 , · · · , an > 0.
Đặt b0 = a0 , b1 = a1 b0 + 1, q0 = 1, q1 = a1 , và v i m i k ≥ 2,

bk = ak bk−1 + bk−2 ,

qk = ak qk−1 + qk−2 .

Khi đ , i) Ck = [a0 ; a1 , · · · , ak ] = qbkk .
ii) V i m i k ≥ 1, ta c bk qk−1 − bk+1 qk = (−1)k+1 .

Đ nh l 2.7. Giả s n là s kh ng ch nh ph ng và qbkk là các phân s h i t


ri ng c a n. Ta đặt α0 = n, và các s αk , Qk , Pk đ c đ nh ngh a nh sau:

Pk + n
,
αk =
Qk
ak = [αk ],

Pk+1 = ak Qk − Pk ,
Qk =

2 )
(n − Pk+1
.
Qk

6


Khi đ , ta c : b2k − nqk2 = (−1)k+1 Qk+1 .

H quả 2.1. Giả s n là s t nhi n kh ng ch nh ph ng. G i qbkk là các phân

s h i t ri ng c a n. Th th , đ ng d b2k mod n lấy theo thặng d tuy t đ i

bé nhất, c giá tr tuy t đ i bé h n 2 n.

2.2

M t s thuật toán t m

c chung l n nhất

2.2.1 Thuật toán Euclid
Đ nh l 2.8. V i m i s nguy n a ≥ 0; b > 0 th gcd(a, b) = gcd(b, a mod b).
Thuật toán Euclid:a hoặc b bằng 0 trả v gcd(a,b)= 0.
function gcd(a,b)
begin
while b ̸= 0 do
begin
r := a mod b; a := b; b := r;
end;
Result:=a
end;

2.2.2 Thuật toán J.Stein
Năm 1967 J.Stein xây d ng m t thuật toán khá thuận ti n đ t m UCLN
trong tr ng h p các s đã cho vi t d i dạng nh phân. Thuật toán tr n d a
tr n nh ng nhận xét đ n giản sau:
1. gcd(a, 0)=a trong tr


ng h p đặc bi t th gcd(0, 0) = 0
)
(
2. N u a, b là các s chẵn th (a, b) = 2 a2 , 2b ;
( )
3. N u a chẵn, b l , th (a, b) = a2 , b ;
4. N u a, b đ u l th a − b chẵn và | a − b |< max (a, b) . (a, b) = (a − b, b)
Đ nh l 2.9. N u N c các

th s ≤ N .

c kh ng tầm th

ng s, t v i N = s.t và s ≤ t,

2.2.3 Thuật toán Euclid m r ng
Thuật toán Euclid m r ng h n thuật toán Euclid đi m trong tr ng h p
a và b nguy n t c ng nhau gcd(a, b) = 1 v i b ≥ a > 0 th thuật toán cho bi t
th m a−1 c a a trong phép chia modulo b t c là: a.a−1 ≡ 1(mod b)
7


Đ nh ngh a 2.11. N u s nguy n d ng a và s nguy n b nguy n t c ng
nhau th t n tại duy nhất m t s x ∈ {0, 1, 2, · · · , b − 1} sao cho ax ≡ 1(mod b).
S x này đ c g i là ngh ch đảo c a a theo modulo b (hoặc ng c lại, n i a là
ngh ch đảo c a x (mod b).
K hi u
a−1 ≡ x(mod b)

hoặc


x−1 ≡ a(mod b).

T m ngh ch đảo c a a theo modulo b. Ta c :

.
(ax − 1) .. b ⇔ ax − 1 = by ⇔ ax − by = 1.
Vậy, ngh ch đảo c a a theo modulo b t n tại khi và ch khi gcd(a, b) = 1.
Thuật toán Euclid m r ng

Vi c xác đ nh các s nguy n x và y v i ax + by = gcd(a, b) đ
là thuật toán Euclid m r ng. Ta c :

c bi t đ n nh

gcd(x, 0) = x.
gcd(x, z) = gcd(z, x mod z) n u z ̸= 0.
N u x ≥ z và phần d kh ng âm nh nhất đ c thay th , cặp m i (z, x
mod z) là nh h n so v i cặp c (x, z).
Cho hai s nguy n kh ng âm u,v t m (u1 ; u2 ; u3 ) sao cho:
(u, v) = u3 = uu1 + uu2 .

Trong t nh toán, ta th m các ẩn ph (v1 ; v2 ; v3 ), (t1 ; t2 ; t3 ) và lu n c trong
m i b c các đẳng th c sau:
ut1 + vt2 = t3 , uv1 + vv2 = v3 ; uu1 + vv2 = v3

Đặt (u1 ; u2 ; u3 ) ← (1, 0, u), (v1 ; v2 ; v3 ) ← (0, 1, v)
Ki m tra v3 = 0 thuật toán k t th c.
[ ]
Đặt:q ← uv33 , và sau đ ta đặt

(t1 ; t2 ; t3 ) ← (u1 ; u2 ; u3 ) − q (v1 ; v2 ; v3 ) ,
(u1 ; u2 ; u3 ) ← (v1 ; v2 ; v3 ) ,

(v1 ; v2 ; v3 ) ← (t1 ; t2 ; t3 ) và quay v b

c 2.

Giả s rằng, 0 ≤ x < z ch ng ta c : r1 = 0, s1 = z, r2 = 1, và s2 = x.
8


D ng th (i + 1) theo sau t th (i − 1) và i bằng cách khấu tr lần th i
càng nhi u càng t t t lần th (i − 1), mà kh ng làm cho ph a tay phải c a k t
quả c a d ng th (i + 1) là âm. Quá tr nh chấm d t ngay khi m t s si = 0;
n u sk = 0 sau đ sk−1 = gcd(x, z) và n u sk−1 = 1, th (rk−1 ≡ x1 mod z)
Thuật toán Euclid m r ng: Cho a, b kh ng đ ng th i bằng 0, trả v cặp
(x,y): a.x + b.y = gcd(a, b). V t t ng là quá tr nh t nh cặp s (x, y) vào trong
v ng lặp ch nh c a thuật toán Euclid
function Extended gcd(a, b);
Begin
(xa , ya ) := (1, 0);
(xb , yb ) := (0, 1);
while

b ̸= 0

do

Begin
[a]


q :=

b
r := a mod b; a := b; b := r
(xr , yr ) := (xa , ya ) − q.(xb , yb )
(xa , ya ) := (xb , yb );
(xb , yb ) := (xr , yr );

end
result := (xa , ya )

end

2.2.4 Đ nh l Fermat nh
Đ nh l 2.10. N u p là m t s nguy n t , th v i s nguy n a bất k , kh ng
chia h t cho p th ap−1 − 1 s chia h t cho p hay ap−1 ≡ 1 mod p.

Đ nh ngh a 2.12. S Carmichael: H p s n là s Carmichael n u n là s
giả nguy n t Fermat v i m i c s a: CLN (a, n) = 1.

• Gần đây đã ch ng minh đ c c v s s Carmichael. C t nhất x 7 trong
s ch ng ≤ x, m t khi x đ l n. Đi u này làm mất hi u l c c a phép
th d a tr n đ nh l nh Fermat: Cho m t s Carmichael p th ngh m
ap−1 ≡ 1 mod p kh ng bao gi thất bại, n u p và a nguy n t c ng nhau,
và do đ kh ng bao gi ch ng minh đ c p là h p s . Nh ng nh giải
thuật ki m tra Miler-Kabin-thuật toán xác suất đ ki m tra t nh nguy n
t .
2


9


Ki m tra Miler-Rabin:
B đ 2.1. V i p là s nguy n t , x là s nguy n: x2 ≡ 1( mod p) khi và ch
khi
x ≡ 1(

hoặc

mod p)

x ≡ (p − 1)(

mod p).

B đ 2.2. V i p là s nguy n t , x là s nguy n: x2 ≡ 1( mod p) khi và ch
khi
x ≡ 1( mod p) hoặc x ≡ (p − 1)( mod p).
p là s nguy n t vi t lại p d

s nguy n d

i dạng p = 2k .q + 1 trong đ q là s l , a là

ng bé h n p. Ta c :

• Hoặc aq ≡ 1( mod p).
• Hoặc trong dãy s aq ; a2q ; a4q ; · · · ; a2
(p − 1) mod p.


k−1

q

t n tại m t s mà đ ng d v i

Thuật toán Miller-Rabin ki m tra t nh nguy n t c a s nguy n p.
Đ nh ngh a 2.13. Giả s n là s nguy n d ng l n − 1 = 2s .t trong đ s là s
nguy n kh ng âm, t là s nguy n d ng l . Ta n i n đ c ki m tra Miller c
j
s b, n u hoặc bt ≡ 1 mod n hoặc b2 .t ≡ −1 mod n v i j nào đ , 0 ≤ j ≤ s − 1.

INPUT S t nhi n l N.
OUTPUT N là s nguy n t : TRUE/FALSE.
MR1.(Xuất phát): Phân t ch
Đặt q ← N − 1, t ← 0 và n u q chẵn ta đặt q ← 2q , t ← t + 1 (bây gi ta c )
N − 1 = 2t .q , q l . Sau đ , đặt c ← 20.
MR2.(Ch n a m i): Ch n ngẫu nhi n s t nhi n a trong khoảng 1 < a < N.
Đặt e ← 0, b ← aq mod N . N u b = 1, chuy n sang MR4.
MR3.(B nh ph ng): N u b ̸≡ ±1( mod N ) và e < t − 2 ta đặt b :=
2
b mod N , e ← e + 1. N u b ̸= N − 1,in ra th ng báo n là h p s và k t
th c thuật toán.
MR4. Đặt c ← c − 1. N u c > 0, chuy n sang MR2.N u c = 0 in ra th ng
báo N là s nguy n t . Trả l i FALSE. K t th c.
Đ i v i s l n c th ch ng minh rằng m t s nguy n ngẫu nhi n đ c
ch n m t ∈ (2, 3, ..., n − 1) c c h i t nhất 75% kh ng th a mãn các đi u ki n
này và do đ là m t ch ng minh cho t nh h p nhất c a n xem [38,49]); xem
th m [3]. Đi u này ch ng t n là h p s .

10


Đ nh l 2.11. N u p là m t h p s d ng l th t n tại kh ng quá p−1
4 c s
b, 1 ≤ b ≤ p − 1 sao cho p trải qua đ c ki m tra Miler đ i v i các c s đ .
(xem [1])

2.3

M t s thuật toán phân t ch s nguy n thành
t ch các th a s nguy n t đặc bi t

2.3.1 Phân t ch s nguy n bằng sàng Erathostenes
Theo đ nh l 2.4 ch ng I đ t m m t c s nguy n t c a m t h p s

N ta phải chia N cho các s nguy n t kh ng v t quá N.


u đi m: sàng c a Erathostenes cho ta thuật toán xác đ nh m i s nguy n
t kh ng v t quá m t s cho tr c.
Đ i v i hầu h t các con s , n rất hi u quả v hầu h t các con s đ u
c các c nguy n t nh : 88% s nguy n d ng c m t c nguy n t
< 100, và gần 92% c
c nguy n t < 1000.

• Nh c đi m: đ ph c tạp quá l n. B i v , theo đ nh l (s nguy n
π(x) là các s nguy n t kh ng v t
t ): limx→∞ ( π(x)
x ) = 1. trong đ

lnx

quá
√ x. Nh vậy, s các s nguy n t kh ng v t quá n là vào khoảng


n
√ = ln2 √nn . Ch ng ta cần O(log2 n. log2 m) phép t nh bit đ chia n cho
ln n
m. Nh vậy, s các phép t nh bit cần thi t đ phân t ch s n vào khoảng


2 n
ln n .C. log2 n = C n. N u n vào c khoảng 100 ch s thập phân, th

s các phép t nh phải d ng c 1050 . V i nh ng máy t nh th c hi n c
m t tri u phép t nh m t giây, th i gian cần thi t s vào khoảng 3, 1.1036
năm.(xem [1]) V vậy, ch ng ta t d ng đ xác đ nh xem m t s c phải
s nguy n t hay kh ng?

2.3.2 Pollard s rho method
Pollard s d ng
đ n giản nhất th a
ta ch sinh ra m t
đ c sinh d a tr n

m t hàm giả ngẫu nhi n đ sinh dãy x1 ; x2 ; · · · ; xk . Hàm
mãn ch nh là: f (x) = x2 + 1 mod N (1). Nh vậy, ch ng
s x1 hoàn toàn ngẫu nhi n và các phần t c n lại s
hàm f (x). Dãy s ngẫu nhi n ta thu đ c cu i c ng là:

x1 ; x2 = f (x1 ); x3 = f (x2 ); · · · ; xk = f (xk−1 )(2). Do dãy x2 ; x3 ; · · · ; xk đ c sinh
b i hàm f(x), n u t n tại xi ≡ xj mod p th ta d dàng suy ra: xi+1 ≡ xj+1
mod p, xi+2 ≡ xj+2 mod p, · · · (3).
11


N i cách khác, ta s c m t v ng trong các dãy s b i f (x) khi lấy mod p
(gi ng nh h nh v v ng li n k t tr n). Nh ng t ng này c th đ c k t
h p thành m t thuật tốn theo cách sau:
• Ch n f (x) = x2 + 1
• Ch n m t giá tr x0 nào đ và t nh theo phép lặp b i ánh xạ f dãy sau:
x1 = f (x0 ), x2 = f (x1 ), · · · , x( j + 1) = f (xj ), j = 0; 1; 2; · · · Sau đ , xét hi u
gi a các xj v i hi v ng t m thấy xj , xk nào đ sao cho: xj ∈
/ xk ( mod n)
nh ng xj ≡ xk ( mod n), trong đ d là m t c kh ng tầm th ng nào
đ c a n. Khi đ , bằng cách t nh (xj − xk , n) ta thu đ c m t c th c
s c a n.
ρ

Figure 2.1: rho

Thuật toán:
INPUTS: n là s nguy n cần phân t ch.
f(x) là hàm tạo s giả ngẫu nhi n.
OUTPUT:
c th c s (̸= 1; ̸= n) c a n hoặc kh ng th c hi n đ
1)x ← 2; y ← 2; d ← 1
2)While d = 1
• x ← f (x)
• y ← f (f (x))

• d ← gcd(| x − y |, n)
3) N u d = n, return (kh ng th c hi n).
4)Else, return d.
12

c


Thành c ng đáng ch
nhất c a ph ng pháp rho c a Pollard cho t i nay
là khám phá vào năm 1980 b i Brent và Pollard v vi c phân t ch nhân t s
8
Fermat th tám (xem [2]): 22 + 1 = 1238926361552897.p62 trong đ p62 bi u
th s nguy n t 62 ch s .
Pollard s p − 1 method
Giả s cần phân t ch s nguy n n và p là m t c nguy n t c a n. N u
p − 1 kh ng c các
c nguy n t l n th thuật toán p − 1 c a Pollard là rất
hi u quả.
Thuật toán
1) Ch n m t s k sao cho n chia h t cho hầu h t các s nguy n nh h n
m t s B nào đ . Chẳng hạn k là B! hoặc k là b i chung nh nhất c a tất cả
các s t 1 đ n B .
2) Ch n ngẫu nhi n m t s nguy n a trong khoảng t 2 đ n n − 2.
3) T nh ak ( mod n) (bằng thuật toán b nh ph ng li n ti p).
4) T nh (ak − 1, n) (Bằng thuật toán Euclid.)
5) N u d = (ak − 1, n) kh ng phải là m t c th c s c a n, ta lặp lại quá
tr nh tr n v i m t s a khác, hoặc k khác(hoặc cả a và k khác).
Nh c đi m c a ph ng pháp (p − 1) c a Pollard là n làm vi c c hi u
quả n u th a s c a n c y u t p : p − 1 là B -m n n n ph ng pháp này ch

hi u quả khi c ch t may mắn.
Thuật toán đ ng cong elliptic mạnh h n đ c Lesntra xây d ng vào nh ng
năm 1980 tr n th c t là s t ng quát h a c a ph ng pháp p − 1 Pollard.
Ph ng pháp đ ng cong eliptic khắc ph c hoàn toàn đ c nh c đi m
tr n. Trong bất k th nghi m nào trong đ m i lần th nghi m bất k kh ng
cần y u t may mắn. M t th nghi m thành c ng n u m t s ngẫu nhi n gần
v i m t s nguy n t c a n là B− m n.

2.3.3 Đ

ng cong Eliptic

Đ ng cong elliptic đ c Lenstra đ xuất, và đ ph c tạp c a ph ng pháp
1
này là e((2+o(1)) log p log log p) 2 .
Phép c ng:
Đ xác đ nh đi m R(xR ; yR ) = P (xP ; yP ) + Q(xQ ; yQ ) ta t nh xR và yR nh
sau:
λ=

yQ − yP
xQ − xP

mod n

xR = (λ2 − xP − xQ )

mod n

yR = (λ(xP − xQ ) − yP )

13

mod n


-Đi m tại v c ng O là đi m c ng v i bất k đi m nào c ng s ra ch nh
đi m đ . Ngh a là :∀P ∈ E, P + O = O + P = P
-Đi m đ i x ng c a P (xP ; yP ) ∈ E là −P (xP ; yP ) ∈ E th a mãn các đi u
ki n: yP′ ∈ ZP sao cho (yP′ + yP ) mod n;P + (−P ) = 0
Phép nhân đ i: -Đ xác đ nh đi m R(xR ; yR ) = 2P (xP ; yP ) v i yP ̸= 0, ta
t nh xR và yR nh sau:
3x2P + a
mod p.
2yP
xR = (λ2 − 2xP ) mod p.
λ=

yR = (λ(xP − xR ) − yP )

mod p.

M r ng ra,phép nhân kP nhận đ c bằng cách th c hi n k lần phép c ng.
Thuật toán nhân đ i và th m cho ta cách làm nh sau:
• Lấy P
• Tăng gấp đ i đ đ

c 2P

• Th m P vào 2P đ đ
• Nhân đ i 2P đ đ

• Th m vào đ đ

c 21 P + 2 0 P

c 22 P

c 22 P + 2 1 P + 20 P

• Gấp đ i 22 P đ đ

c 23 P

• Gấp đ i 23 P đ đ

c 24 P

• Th m n vào k t quả tr

cđ đ

c 24 P + 2 3 P + 22 P + 21 P + 20 P


• Cu i c ng ch ng ta t nh toán 151P th c hi n ch bảy lần nhân đ i và b n
phép c ng b sung
Thuật toán nhân t h a v i m t đ ng cong elliptic Cho k là h p s
sao cho k = k1 .k2 khi đ ta c th t nh kP = k1 (k2 P ).
Đầu vào c a thuật toán là s t nhi n n và các tham s v; w ∈ N , ph thu c
vào n. C ng nh a; x; y ∈ Zn , sao cho P (x; y; 1) ∈ Vn t y 2 = x3 + ax + b ⇔ b ≡
y 2 − x3 − ax( mod n) th a mãn đi u ki n (4a3 + 27b2 ∈ Zn. )

Thuật toán t m ki m c s t nhi n d c a s n: 1 < d < n. Đ i v i t ng
s r ∈ N,

e(r) = max {m |∈ Z≥0 , rm ≤ v + 2 v + 1}, và sau đ :
14


k=



re(r) (r là s nguy n t ; e(r) là m t s nguy n d

ng)2 ≤ r ≤ w ch ng

ta giả s :
Giả s P (x : y : 1) ∈ Vn .Khi đ ,P nằm tr n đ ng cong Eliptic Ea;b ttrong
vành Zn , đ c xác đ nh b i ph ng tr nh y 2 = x3 + ax + b. Ch ng ta t nh đi m
kP,n u trong quá tr nh t nh toán t m đ c c c a s n,1 < d < n, th ch ng
ta phân t ch đ c n ra th a s và thuật toán d ng.N u nh t m đ c kP và
kh ng t m đ c d th thuật toán d ng và th ng báo và thuật toán phân t ch
thành nhân t kh ng thành c ng.Thuật toán k t th c.
Đ nh l

2.12. Giả s E là đ ng cong elliptic cho b i ph ng tr nh y 2 =
x3 + ax + b, trong đ a, b ∈ Z và (4a3 + 27b2 , n) = 1. Giả s P1 và P2 là hai
đi m tr n E c mẫu s c a các t a đ nguy n t c ng nhau v i n, đ ng th i
P1 ̸= −P2 . Khi đ đi m P1 + P2 c t a đ v i mẫu s nguy n t c ng nhau v i
n n u và ch n u kh ng t n tại
c nguy n t nào c a n, p | n v i t nh chất

sau đây. Các đi m P1 mod P và P2 mod P tr n E mod p c t ng là đi m
O mod p ∈ E mod p. (E mod p là đ ng cong tr n tr ng F nhận đ c bằng
cách lấy đ ng d r t g n modulo p các h s c a ph ng tr nh y 2 = x3 + ax + b.)
Thuật toán nhân t h a v i m t đ ng cong elliptic. Cho k là h p
s sao cho k = k1 .k2 khi đ ta c th t nh kP = k1 (k2 P ).
Đầu vào c a thuật toán là s t nhi n n và các tham s v; w ∈ N , ph thu c
vào n. C ng nh a; x; y ∈ Zn , sao cho P (x; y; 1) ∈ Vn t y 2 = x3 + ax + b ⇔ b ≡
y 2 − x3 − ax( mod n) th a mãn đi u ki n (4a3 + 27b2 ∈ Zn. )
Thuật toán t m ki m c s t nhi n d c a s n : 1 < d < n. Đ i v i t ng
s r ∈ N,

e(r) = max {m |∈ Z≥0 , rm ≤ v + 2 v + 1}, và sau đ :

k = re(r) (r là s nguy n t ; e(r) là m t s nguy n d ng)2 ≤ r ≤ w
Giả s P (x : y : 1) ∈ Vn . Khi đ , P nằm tr n đ ng cong elliptic Ea;b trong
vành Zn , đ c xác đ nh b i ph ng tr nh y 2 = x3 + ax + b. Ch ng ta t nh đi m
kP , n u trong quá tr nh t nh toán t m đ c c c a s n, 1 < d < n, th ch ng
ta phân t ch đ c n ra th a s và thuật toán d ng. N u nh t m đ c kP và
kh ng t m đ c d th thuật toán d ng và th ng báo và thuật toán phân t ch
thành nhân t kh ng thành c ng.
Thuật toán k t th c.

2.3.4 Ph

ng pháp c a Fermat

T nh gcd(n; xy) t nh c s chung l n nhất c a n và xy . N u n là h p s ,
kh ng phải là s nguy n t , và x, y là các s nguy n ngẫu nhi n th a mãn
15



x2 ≡ y 2 th c

t nhất 50% c h i cho gcd(x − y; n) và gcd(x + y; n) các th a s

kh ng nh c a n.
Thuật toán Phân t ch h p s n

1) Ch n s nguy n x > n.
2) Ki m tra xem x2 − n c là s ch nh ph
• N u x2 − n kh ng là s ch nh ph
tr c a x.
• N u x2 − n là s ch nh ph

ng kh ng?

ng, th ta quay lại b

ng y 2 , th ta chuy n sang b

c 1 và tăng giá
c sau.

3) n = x2 − y 2 = (x − y)(x − y).

2.3.5 Ph

ng pháp Squfof

Squfof là t vi t tắt c a square form factorization phân t ch các dạng

ch nh ph ng.
Ta xuất phát t nhận xét sau đây: N u ta t m đ c các s x, y sao cho:x −
y ̸= 1 và x2 − y 2 = n th ta t m đ c
c s kh ng tầm th ng c a n v
2
2
n = x − y = (x + y)(x − y). Bây gi , ta c k t quả y u h n:
Giả s c x, y : x2 ≡ y 2 ( mod n) và 0 < x < y < n, x + y ̸= n khi đ n là m t
c c a t ch (x + y)(x − y) và r ràng n kh ng là c c a x + y c ng nh x − y
và do đ d1 = gcd(x − y, n) và d2 = gcd(x + y, n) là các c s kh ng tầm th ng
c a n. Các c s này đ c t m nhanh ch ng th ng qua thuật toán Euclid.
T đ nh l 2.9 cho ta ph ng pháp t m x, y cần thi t.
Ta c p2k ≡ (−1)k+1 Qk+1 ( mod n) nh vậy, ta phải t m đ c các Qk+1 v i ch
.
s chẵn và là s ch nh ph ng y 2 th x2 ≡ y 2 ( mod n). Khi đ , (xk +y)(xk −y)..n.

Nh vậy, các c s chung l n nhất d1 = (xk + y, n) và d2 = (xk − y, n) , c nhi u
khả năng là các c kh ng tầm th ng c a n, v các s xk + y, xk − y, kh ng
nhất thi t bé h n n.

2.3.6 Thuật toán Dixon
Thuật toán:
INPUTS: S nguy n n cần ki m tra.
B c 1: Ch ng ta cần t m các s m1 , · · · , mk+1 bằng cách l a ch n ngẫu
nhi n sao cho:
1 < mi < n
α

α


Q(mi ) = p1 i,1 ...pk i,k
m2i ≡ Q(mi )(
16

mod n).


Các giá tr c a pi là chẵn lần, và v i i = 1, ..., k + 1. K hi u:


v = (αi,1 , · · · , αi,k ) ∈ Z k .

B

c 2: Giải h ph

ng tr nh tuy n t nh:


→ −

v−
v1 + ... + xk+1 −
x1 −
k+1 ≡ 0 (

Trong kh ng gian vecto Z2k , ch ng ta t m đ

mod 2).


c tập

x1 , ..., xk+1 ∈ {0, 1},

tập này kh ng bao g m các giá tr 0(b i v s l ng ph
s ẩn).
B c 3: Đ t m đ c x1 , ..., xk+1 ,ta c bi u th c sau:
∑k+1

x

k+1 2
(mx1 1 ...mk+1
) ≡ p1

i=1

xi αi,1

∑k+1

...pk

i=1

xi αi,k

(

ng tr nh k nh h n


mod n).

K hi u
x1

X = (m1 ...mk+1

xk+1

), Y =

k


(

∑k+1

pj

i=1

xi αi,j )/2

j=1

s
((


k+1


xi αi,j )/2)

i=1

là s nguy n xác đ nh theo xi . Ch ng ta nhận đ c bi u th c t ng ng
X 2 ≡ Y 2 ( mod n). Ti p t c ta ki m tra đi u ki n : 1 < gcd(X ± Y, n) < n. N u
thành c ng ta đã phân t ch n thành th a s . Trong tr ng h p kh ng thành
c ng th ch ng ta quay lại b c 1 và t nh các giá tr khác c a mi
K t th c thuật toán.
Giả s ch ng ta c m t tập B = p1 , ..., pB nhân t và tập V các m i quan
h trong b c thu thập d li u.
X l d li u: Giả s C l n h n B và giả s C c đ ng d th c:
α
α
α
x2j ≡ p1 1j .p2 2j ...pBBj ( mod n) v i 1 ≤ j ≤ C . V i m i j vecto:


aj = (α1j mod 2, α2j mod 2, ..., αBj mod 2) ∈ (Z2 )B . N u c th t m đ c

m t tập con các −
aj sao cho t ng các modulo 2 là vecto (0, 0, ..., 0) th t ch c a
các xj t ng ng s s d ng m i nhân t trong B m t s chẵn lần.

2.3.7 Thuật toán Sàng bậc hai-Quadratic Sieve
[ ]
Đ ph c tạp c a thuật toán là: Ln 12 ; 1 l nh s h c.

Ch ng ta m tả s đ thuật toán ban đầu c a sàng bậc hai. Đầu ti n,
ch ng ta xây d ng bi u th c X 2 ≡ Y 2 ( mod n) và ki m tra bất đẳng th c:
17


1 < gcd(X ± Y, n) < n đ làm đ c đi u này ch ng ta xem xét đa th c: Q(x) =


(x + ⌊ n⌋)2 − n ≡ H(x)2 ( mod n).
đây, H(x) = x + ⌊ n⌋. D nhận thấy các

giá tr c a Q(x) là các giá tr nguy n, r ràng ch ng là s ch nh ph ng theo
modulo n. Trong c s nhân t ch ng ta c th xem p0 = −1 và tất cả các s
nguy n t pi , p1 ≤ B sao cho: pni = 1. Sau đ , v i s gi p đ c a sàng, ch ng

ta t m giá tr xi mà: Ai = Q(xi ) = p∈S pαip ngh a là Q(xi ) phân t ch trong c
s nhân t c a ch ng ta. Ta k hi u: Bi = H(xi ) ta nhận đ c đ ng d th c
Bi2 ≡ Ai (modn) ta t ch l y s l ng đ l n các bi u th c nh th ch ng ta th c
hi n loại b các bi n và xây d ng bi u th c X 2 ≡ Y 2 ( mod n)
Đi u ki n np = 1 v i p là s nguy n t c a c s nhân t lấy t đ ng d

th c (x + ⌊ n⌋)2 ≡ n( mod p), mà đ ng d cần th a mãn đ i v i m t s giá
tr c a x ∈ Z.
Giá tr xi ∈ Z đ i v i Q(xi ) đ c xác đ nh nh sau:
1) Đ i v i t ng s nguy n t p t c s nhân t , ch ng ta t m nghi m r1( p)
và r2( p) c a ph ng tr nh Q(x) ≡ 0( mod p).
2) Sau đ , ch ng ta thay đ i x trong khoảng đ l n [−M ; M ],M ∈ N , ch ng
ta đ a đ n m t ma trận A, mà n đ c đánh s th t bằng giá tr c a x.
3) Trong m i phần t c a ma trận v i s th t c a x ta đặt A log | Q(x) | .
4) Sau đ , đ i v i t ng giá tr p t c s nhân t S ch ng ta th c hi n quá

tr nh sàng nh sau: T m i phân t cuả ma trận (A [x]), s th t c a n nằm
trong cấp s c ng
x ≡ r1p ( mod p)


mod p),

x ≡ r2p (

ch ng ta t nh toán giá tr c a log p.
Th i gian chạy c a thuật toán là

Ln

[1 ]
2

;1 .

18


Ch

ng 3

H mã kh a RSA, ch k s và
hàm băm mật mã
N i dung ch y u c a ch


3.1

ng này đ

c h nh thành t tài li u [4].

H mã h a RSA

Thuật toán RSA đ c lấy t ba ch cái đầu c a t n ba tác giả thuật toán
là: Ron Rivest, Adi Shamir và Len Adleman m tả lần đầu ti n vào năm 1977
tại H c vi n C ng ngh Massachusetts (MIT) và đ c MIT đăng k bằng sáng
ch tại Hoa K vào năm 1983(s đăng k 4405829.)
t ng ch nh đảm bảo t nh an tồn c a thuật tốn d a tr n đ kh c a
vi c phân t ch s nguy n l n thành t ch các th a s nguy n t .Thuật toán RSA
c b n b c ch nh là:tạo kh a, chia s key, mã h a và giải mã,c hai kh a:
• Kh a c ng khai( Public Key)
• Kh a b mật ( Private Key)

3.2

Tạo kh a, mã h a, giải mã c a h RSA

Các b

c tạo kh a:

1. Ch n 2 s nguy n t l n p và q ,v i p ̸= q ,l a ch n ngẫu nhi n và đ c lập.
2. T nh n = p.q .
3. T nh : Giá tr hàm s


le φ(n) = (p − 1)(q − 1).

4. Ch n m t s t nhi n e sao cho:1 < e < φ(n), và là nguy n t c ng nhau
v i φ(n).

19


5. T nh : d sao cho
hay

d.e ≡ 1(
d=

mod φ(n)).

x.φ(n) + 1
e

Kh a c ng khai:(e,n).
Kh a b mật:(d,n).
Các s nguy n t đ c ch n theo ph ng pháp th xác suất.
B c b n ,năm đ c th c hi n bằng thuật giải Euclide m r ng.
Mã h a và giải mã: Bản r (th ng tin tr c khi mã h a )k hi u m
Bản mã (th ng tin sau khi mã h a )k hi u là c
Kh a b mật d th ng là m t s rất l n đ c gi b mật B c 1: A nhận
kh a c ng khai c a B
B c 2: A chuy n bản r M thành s t nhi n m sao cho m và n nguy n
t c ng nhau và 0 < m < n.
B c 3: Mã h a m thành c

mod n

c ≡ me

và c là bản mã chuy n cho ng i nhận.
B c 4: G i c cho B
B c 5: Giải mã: Ng i nhận s chuy n bản mã t c đ c m ta làm nh
sau:cd ≡ med ≡ m mod n
m là th ng tin nhận đ c.
Đ an toàn c a thuật toán RSA ph thu c vào hai bài toán: bài toán phân
t ch m t s ra t ch các th a s nguy n t và bài toán RSA. Hi n nay, ch a t m
đ c m t ph ng pháp nào tr n máy t nh giải quy t đ c bài toán này trong
th i gian đa th c.

3.3

Ch k đi n t -Ch k s

M t s đ ch k s c hai phần: Thuật toán k và thuật toán xác minh.
Giao th c ch k s đ n giản.
Bob tạo ra m t cặp kh a m t kh a c ng khai kpr và kpub
Nhập th ng đi p (sign message: s = sigkpr (x))
G i th ng đi p và ch k s (x,s) cho Alice
Alice xác minh ch k s verify signature: verkpr,B (x, s)=true/false

20


3.4


Hàm băm

Ch ng ta s nghi n c u tại sao hàm băm đ
ch k s ?

c y u cầu trong các l



Đ nh ngh a 3.1. Hàm băm mật mã là hàm nhận vào chu i k t c đ dài
bất k (Message) k t xuất ra m t chu i c đ dài xác đ nh(digest) g i là giá tr
băm và k t quả tạo ra c dung l ng nh h n chu i đầu vào. Hàm băm c các
thu c t nh:
- D dàng t m đ c digest c a m t chu i bất k
- Kh ng th t m đ c th ng đi p g c c a digest
- Kh ng th đi u ch nh đ c th ng đi p mà kh ng làm thay đ i digest c a
n
- Kh ng th t m đ c hai th ng đi p khác nhau c c ng digest.

3.4.1 Ph

ng th c mã h a MD5

MD5 Là m t phi n bản tăng c ng c a M D4, đ c đ xuất b i giáo s
Rivest vào năm 1991. Cả hai hàm băm t nh toán đầu ra 128 bit, t c là ch ng
c s c đ kháng va chạm khoảng 264 . M D5 là m t loạt các giải thuật đ ng
h a th ng tin v i các thuật toán đ c thi t k t y ch nh.
ng d ng: -Trong ch k đi n t .
-D ng trong các ng d ng bảo mật.
-Ki m tra t nh toàn v n c a tập tin đ c truy n đi.

-l u tr mật khẩu.
Đặc đi m :
-T m t đoạn văn bản đầu vào s tạo ra m t chu i g i là Message Digest
hay c n g i là MD5 hasd c đ dài c đ nh cho tr c đ c mã h a d i dạng
hexa.
-T m t đoạn văn bản đầu vào s tạo ra duy nhất m t hash cho m t văn
bản.
-T m t hash đầu ta s kh ng bao gi suy ng c đ c plantext (bản r )
ban đầu.
Giải thuật: G m 5 b c:
Input: chu i c đ dài bất k .
Output: Giá tr băm c đ dài 128 bits.
B c 1: Nh i d li u:
-Nh i th m các bits sao cho d li u c đ dài là l ≡ 448 mod 512 hay
l = n.512 + 448 (v i l, n nguy n).
21


×