TIỂU LUẬN
Phần 1 : Hệ mã đối xứng
1. 1. Mã hóa :
- Chuỗi cần mã : trantanhaibatribentre
1. 1. 1. Mã Ceasar : k = 5
- Bảng mã tương ứng với k = 5
1 2 3 4 5 6 7 8 9
1
0
1
1
1
2
1
3
a b c d e f g h i j k l m
f g h i j k l m n o p q r
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
n o p q r s t u v w x y z
s t u v w x y z a b c d E
- Chiếu tương ứng từng cột ta có quy tắc mã hóa như sau : a = f, b = g, c = h, ,
y = d, z = e.
- Áp dụng quy tắc mã hóa vào chuỗi cần mã hóa, ta có bảng sau :
t r a n t a n h a i b a t r
y w f s y f s m f n g f y w
i b e n t r e
n g j s y w j
- Ta có kết quả mã hóa như sau :
trantanhaibatribentre
Ceasar
→
ywfsyfsmfngfywngjsywj
1. 1. 2. Mã Affine : a = 7 và b = 3
- Hàm mã hóa : Ta chọn n = 26 (bảng chữ cái tiếng Anh), mà gcd(26, 7) = 1 nên
ta có hàm mã hóa cho từng ký tự là : E(x) = (ax + b) mod n
- Lập bảng :
0
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
1
0
1
1
1
2
a b c d e f g h i j k l m
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
n o p q r s t u v w x y z
- Chuỗi ban đầu có giá trị lần lượt là :
1 | P a g e
t r a n t a n h a i b a t r
1
9
1
7
0
0
1
3
1
9
0
0
1
3
0
7
0
0
0
8
0
1
0
0
1
9
17
i b e n t r e
0
8
0
1
0
4
1
3
1
9
1
7
0
4
- Áp dụng hàm mã hóa cho từng ký tự :
E(19) = 7 . 19 + 3 mod 26 = 06 mod 26 (tương ứng ký tự g)
E(17) = 7 . 17 + 3 mod 26 = 18 mod 26 (tương ứng ký tự s)
E(00) = 7 . 00 + 3 mod 26 = 03 mod 26 (tương ứng ký tự d)
E(13) = 7 . 13 + 3 mod 26 = 16 mod 26 (tương ứng ký tự q)
E(19) = 7 . 19 + 3 mod 26 = 06 mod 26 (tương ứng ký tự g)
E(00) = 7 . 00 + 3 mod 26 = 03 mod 26 (tương ứng ký tự d)
E(13) = 7 . 13 + 3 mod 26 = 16 mod 26 (tương ứng ký tự q)
E(07) = 7 . 07 + 3 mod 26 = 00 mod 26 (tương ứng ký tự a)
E(00) = 7 . 00 + 3 mod 26 = 03 mod 26 (tương ứng ký tự d)
E(08) = 7 . 08 + 3 mod 26 = 07 mod 26 (tương ứng ký tự h)
E(01) = 7 . 01 + 3 mod 26 = 10 mod 26 (tương ứng ký tự k)
E(00) = 7 . 00 + 3 mod 26 = 03 mod 26 (tương ứng ký tự d)
E(19) = 7 . 19 + 3 mod 26 = 06 mod 26 (tương ứng ký tự g)
E(17) = 7 . 17 + 3 mod 26 = 18 mod 26 (tương ứng ký tự s)
E(08) = 7 . 08 + 3 mod 26 = 07 mod 26 (tương ứng ký tự h)
E(01) = 7 . 01 + 3 mod 26 = 10 mod 26 (tương ứng ký tự k)
E(04) = 7 . 04 + 3 mod 26 = 05 mod 26 (tương ứng ký tự f )
E(13) = 7 . 13 + 3 mod 26 = 16 mod 26 (tương ứng ký tự q)
E(19) = 7 . 19 + 3 mod 26 = 06 mod 26 (tương ứng ký tự g)
E(17) = 7 . 17 + 3 mod 26 = 18 mod 26 (tương ứng ký tự s)
E(04) = 7 . 04 + 3 mod 26 = 05 mod 26 (tương ứng ký tự f)
- Ta có kết quả mã hóa như sau :
trantanhaibatribentre
Affine
→
gsdqgdqadhkdgshkfqgsf
1. 1. 3. Mã Reilfence : k = 5 dòng kẻ
- Viết chuỗi cần mã hóa theo chiều dọc trên 5 dòng, ta được bảng sau (các ô
trống, ta điền ký tự .) :
2 | P a g e
T A B B E .
R N A E . .
A H T N . .
N A R T . .
T I I R . .
- Ta có kết quả mã hóa như sau :
trantanhaibatribentre
Reilfence
→
tabbe.rnae ahtn nart tiir
1. 1. 4. Mã Vigence :
- Khóa : hue, ta có bảng sau :
a b c d e f g h i j k l m
K1 h i j k l m n o p q r s t
n o p q r s t u v w x y z
K1 u v w x y z a b c d e f g
a b c d e f g h i j k l m
K2 u v w x y z a b c d e f g
n o p q r s t u v w x y z
K2 h i j k l m n o p q r s t
a b c d e f g h i j k l m
K3 e f g h i j k l m n o p q
n o p q r s t u v w x y z
K3 r s t u v w x y z a b c d
- Chia chuỗi cần mã hóa theo bộ 3 để mã hóa, ta có bảng sau :
t r a n t a n h a i b a t r
K1 K2 K3 K1 K2 K3 K1 K2 K3 K1 K2 K3 K1 K2
i b e n t r e
K3 K1 K2 K3 K1 K2 K3
- Ta có kết quả mã hóa như sau :
trantanhaibatribentre
Vigence
→
aleuneubepvealmiyrali
1. 1. 5. Mã PlayFair :
- Khóa : rachmieu
- Tạo bảng sau để mã hóa :
r a c h m
i e u b d
f g k l n
o p q s t
v w x y z
3 | P a g e
- Chuỗi cần mã hóa được tách thành bộ 2 ký tự như sau (do độ dài chuỗi là 21,
nên ta thêm 1 ký tự x vào cuối chuỗi) :
tr an ta nh ai ba tr ib en tr ex
- Chiếu từng cặp sau khi tách chuỗi vào bảng mã hóa, ta được kết quả :
TR = OM IB = ED
AN = MG EN = DG
TA = PM TR = OM
NH = LM EX = UW
AI = RE
BA = EH
TR = OM
- Ta có kết quả mã hóa như sau :
trantanhaibatribentre
PlayFair
→
ommgpmlmreehomeddgomuw
1. 2. Giải mã :
- Chuỗi cần giải mã : trantanhaibatribentre
1. 2. 1. Mã Ceasar :
- Chuỗi cần giải mã : ywfsyfsmfngfywngjsywj
- Ta có bảng mã hóa như sau :
1 2 3 4 5 6 7 8 9
1
0
1
1
1
2
1
3
a b c d e f g h i j k l m
f g h i j k l m n o p q r
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
n o p q r s t u v w x y z
s t u v w x y z a b c d e
- Chiếu tương ứng từng cột ta có quy tắc mã hóa như sau : a = f, b = g, c = h, ,
y = d, z = e.
- Ta có kết quả giải mã như sau :
ywfsyfsmfngfywngjsywj
decrypt
Ceasar
→
trantanhaibatribentre
1. 2. 2. Mã Affine : a = 7 và b = 3
- Chuỗi cần giải mã : gsdqgdqadhkdgshkfqgsf
- Hàm mã hóa : Ta chọn n = 26 (bảng chữ cái tiếng Anh), mà gcd(26, 7) = 1 nên
ta có hàm giải mã cho từng ký tự là : D(x) = a
-1
(x – b) mod n
- Lập bảng :
0
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
1
0
1
1
1
2
4 | P a g e
a b c d e f g h i j k l m
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
n o p q r s t u v w x y z
- Chuỗi ban đầu có giá trị lần lượt là : gsdqgdqadhkdgshkfqgsf
g s d q g d q a d h k d g s
0
6
1
8
0
3
1
6
0
6
0
3
1
6
0
0
0
3
0
7
1
0
0
3
0
6
18
h k f q g s f
0
7
1
0
0
5
1
6
0
6
1
8
0
5
- Áp dụng hàm giải mã cho từng ký tự :
D(06) = 7
-1
(06 – 3) mod 26 = 19 mod 26 (tương ứng ký tự t)
D(18) = 7
-1
(18 – 3) mod 26 = 17 mod 26 (tương ứng ký tự r)
D(03) = 7
-1
(07 – 3) mod 26 = 00 mod 26 (tương ứng ký tự a)
D(16) = 7
-1
(24 – 3) mod 26 = 13 mod 26 (tương ứng ký tự n)
D(06) = 7
-1
(03 – 3) mod 26 = 19 mod 26 (tương ứng ký tự t)
D(03) = 7
-1
(16 – 3) mod 26 = 00 mod 26 (tương ứng ký tự a)
D(16) = 7
-1
(19 – 3) mod 26 = 13 mod 26 (tương ứng ký tự n)
D(00) = 7
-1
(06 – 3) mod 26 = 07 mod 26 (tương ứng ký tự h)
D(03) = 7
-1
(18 – 3) mod 26 = 00 mod 26 (tương ứng ký tự a)
D(07) = 7
-1
(13 – 3) mod 26 = 08 mod 26 (tương ứng ký tự i)
D(10) = 7
-1
(16 – 3) mod 26 = 01 mod 26 (tương ứng ký tự b)
D(03) = 7
-1
(19 – 3) mod 26 = 00 mod 26 (tương ứng ký tự a)
D(06) = 7
-1
(17 – 3) mod 26 = 19 mod 26 (tương ứng ký tự t)
D(18) = 7
-1
(03 – 3) mod 26 = 17 mod 26 (tương ứng ký tự r)
D(07) = 7
-1
(07 – 3) mod 26 = 08 mod 26 (tương ứng ký tự i )
D(10) = 7
-1
(02 – 3) mod 26 = 01 mod 26 (tương ứng ký tự b)
D(05) = 7
-1
(03 – 3) mod 26 = 04 mod 26 (tương ứng ký tự e)
D(16) = 7
-1
(15 – 3) mod 26 = 13 mod 26 (tương ứng ký tự n)
D(06) = 7
-1
(06 – 3) mod 26 = 19 mod 26 (tương ứng ký tự t)
D(18) = 7
-1
(07 – 3) mod 26 = 17 mod 26 (tương ứng ký tự r)
D(05) = 7
-1
(05 – 3) mod 26 = 04 mod 26 (tương ứng ký tự e)
- Ta có kết quả giải mã như sau :
gsdqgdqadhkdgshkfqgsf
decrypt
Affine
→
trantanhaibatribentre
1. 2. 3. Mã Reilfence :
- Chuỗi cần giải mã : tabbe.rnae ahtn nart tiir
- Lập k = 5 nhóm có số ký tự bằng nhau :
tabbe. rnae a htn na rt tii r
- Điền các nhóm ký tự vào bảng sau để giải mã :
t a b b e .
5 | P a g e
r n a e . .
a h t n . .
n a r t . .
t i i r . .
- Dựa vào bảng trên, ta có kết quả giải mã như sau :
tabbe.rnae ahtn nart tiir
Re
decrypt
ilfence
→
trantanhaibatribentre
1. 2. 4. Mã Vigence :
- Khóa : hue, ta có bảng sau :
a b c d e f g h i j k l m
K1 h i j k l m n o p q r s t
n o p q r s t u v w x y z
K1 u v w x y z a b c d e f g
a b c d e f g h i j k l m
K2 u v w x y z a b c d e f g
n o p q r s t u v w x y z
K2 h i j k l m n o p q r s t
a b c d e f g h i j k l m
K3 e f g h i j k l m n o p q
n o p q r s t u v w x y z
K3 r s t u v w x y z a b c d
- Chia chuỗi cần mã hóa theo bộ 3 để mã hóa, ta có bảng sau :
a l e u n e u b e p v e a l
K1 K2 K3 K1 K2 K3 K1 K2 K3 K1 K2 K3 K1 K2
m i y r a l i
K3 K1 K2 K3 K1 K2 K3
- Ta có kết quả giải mã như sau :
aleuneubepvealmiyrali
decrypt
Vigence
→
trantanhaibatribentre
1. 2. 5. Mã PlayFair :
- Khóa : rachmieu
- Tạo bảng sau để giải mã :
r a c h m
i e u b d
f g k l n
o p q s t
v w x y z
- Chuỗi cần mã hóa được tách thành bộ 2 ký tự như sau (do độ dài chuỗi là 21,
nên ta thêm 1 ký tự x vào cuối chuỗi) :
6 | P a g e
om mg pm lm re eh om ed dg om uw
- Chiếu từng cặp sau khi tách chuỗi vào bảng mã hóa, ta được kết quả :
OM = TR ED = IB
MG = AN DG = EN
PM = TA OM = TR
LM = NH UW = EX
RE = AI
EH = BA
OM = TR
- Ta có kết quả mã hóa như sau :
ommgpmlmreehomeddgomuw
decrypt
PlayFair
→
trantanhaibatribentre
Phần 2 : Hệ mã mũ
2. 1. Hệ mã mũ ElGamal :
2. 1. 1. Mã hóa : (tự chọn khóa k
B
> 10 và p = 101, g = 2)
- Tên học viên – chuỗi cần mã hóa : M = hai
- Lập bảng :
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
1
0
1
1
1
2
1
3
a b c d e f g h i j k l m
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
n o p q r s t u v w x y z
- Chuỗi cần mã hóa sau khi tra vào bảng trở thành : M = 080109 (vì H = 08, A =
01, I = 09)
- Ta có p = 101, g = 2, chọn S = 23, k
B
= 11 > 10 (yêu cầu của đề bài), vậy
B
K
g
= 2048 mod 101 = 28 mod 101
- A chuyển cho B bộ (g
S
, M.
B
SK
g
) mod p = (2
23
, 80109 . 28
23
) mod 101
- Tính toán :
+ 2
23
mod 101 = 2
10
.2
10
.2
3
mod 101
= 1024 . 1024 . 8 mod 101
= 14 . 14 . 8 mod 101
= 1568 mod 101
= 53 mod 101
+ 80109 . 28
23
mod 101 :
Ta có : 23 = 16 + 4 + 2 + 1 = 2
4
+ 2
2
+ 2
1
+ 2
0
0
2
28
= 28 mod 101
1
2
28
= 28 . 28 mod 101 = 77 mod 101
2
2
28
= 77 . 77 mod 101 = 71 mod 101
3
2
28
= 71 . 71 mod 101 = 92 mod 101
4
2
28
= 92 . 92 mod 101 = 81 mod 101
7 | P a g e
Vậy
B
SK
g
= 28
23
= 81 . 71 . 77 . 28 mod 101 = 93 mod 101
Từ đó ta có : 80109 . 28
23
= 80109 . 93 mod 101 = 74 mod 101
- A chuyển cho B cặp số : (53, 74)
2. 1. 2. Giải mã :
- Cặp số mà B nhận được : (53, 74)= (g
S
, M.
B
SK
g
)
- Công thức : M = (M .
B
SK
g
) . (
B
SK
g
)
-1
mod 101. Ta chọn k
B
= 11.
Vậy : (
B
SK
g
)
-1
= (53
11
)
-1
, M .
B
SK
g
= 18
Ta có : 11 = 8 + 2 + 1 = 2
3
+ 2
1
+ 2
0
0
2
53
= 53 mod 101
1
2
53
= 53 . 53 mod 101 = 82 mod 101
2
2
53
= 82 . 82 mod 101 = 58 mod 101
3
2
53
= 58 . 58 mod 101 = 31 mod 101
Vậy 53
11
= 53 . 82 . 31 mod 101 = 134726 mod 101 = 93 mod 101
- Tìm (
B
SK
g
)
-1
mod 101 = (93)
-1
mod 101
101 = 1 . 93 + 8 1 = 3 - 1 . 2
93 = 11 . 8 + 5 = 3 - 1 . (5 - 1 . 3) = (-1) . 5 + 2 . 3
8 = 1 . 5 + 3 = (-1) . 5 + 2 . (8 - 1 . 5) = 2 . 8 + (-3) . 5
5 = 1 . 3 + 2 = 2 . 8 + (-3) . (93 - 11 . 8) = (-3) . 93 + 35 . 8
3 = 1 . 2 + 1 = (-3) . 93 + 35 . (101 - 1 . 93)
= 35 . 101 + (-38) . 93
Mà 101 + (-38) = 63. Vậy (
B
SK
g
)
-1
mod 101 = 63 mod 101
- Từ đó ta có : M = (M .
B
SK
g
) . ((
B
SK
g
)
-1
)
= 74 . 63 mod 101 = 16 mod 101
Hay ta có thể viết lại là : M = 16 + k . 101. Với k = 793 ta có thể tính được M =
80109 là giá trị ban đầu. Tra vào bảng mã ta sẽ suy ra chuỗi ban đầu.
2. 2. Hệ mã RSA :
- Tự chọn p, q sao cho p, q > 100 và gcd(p, q) = 1. Ta chọn : p = 103 và q = 107
2. 2. 1. Mã hóa :
- Tính N = p * q = 103 * 107 = 11021
( ) ( 1)( 1)N p qΦ = − −
= (103 – 1)(107 – 1) = 10812
- Chọn e = 79, ta có (e,
( )NΦ
) = (79, 10812) = 1
- Dữ liệu ban đầu : HAI 80109
d = e
-1
mod Φ(N) = 79
-1
mod 10812
10812 = 136 . 79 + 68 1 = 11 - 5 . 2
79 = 1 . 68 + 11 = 11 - 5 . (68 - 6 . 11)
68 = 6 . 11 + 2 = (-5) . 68 + 31 . 11
11 = 5 . 2 + 1 = (-5) . 68 + 31 . (79 – 1 . 68)
= 31 . 79 + (-36) . 68
= 31 . 79 + (-36) . (10812 – 136 . 79)
= (-36) . 10812 + 4927 . 79
Vậy d = 4927 mod 10812
Từ đó ta có 2 khóa : khóa công khai K
p
= (e, N) = (79, 11021) và khóa bí mật là K
s
= (d, p, q) = (4927, 103, 107)
8 | P a g e
Mã hóa M = 80109 ta có công thức mã hóa C = M
e
mod N
hay C = 80109
79
mod 11021 = 2962
79
mod 11021
79 = 64 + 8 + 4 + 2 + 1 = 2
6
+ 2
3
+ 2
2
+ 2
1
+ 2
0
2962
0
2
1803
= 1803 mod 11021
1
2
1803
= 1803 . 1803 mod 11021 = 10635 mod 11021
2
2
1803
= 10635 . 10635 mod 11021 = 5723 mod 11021
3
2
1803
= 5723 . 5723 mod 11021 = 9338 mod 11021
4
2
1803
= 9338 . 9338 mod 11021 = 92 mod 11021
5
2
1803
= 92 . 92 mod 11021 = 8464 mod 11021
6
2
1803
= 8464 . 8464 mod 11021 = 2796 mod 11021
Từ đó ta có : C = 1803
79
mod 11021
= 1803 . 10635 . 5723 . 9338 . 2796 mod 11021
= 2865154221576438120 mod 11021
C = 1889 mod 11021
2. 2. 2. Giải mã :
- Ta có C = 1889 mod 11021, ta cần giải mã với khóa công khai là :
K
p
= (e, N) = (79, 11021)
- Công thức giải mã : M = C
d
mod N. Ta có C = 1889, N = 11021, ta cần tìm d :
d = e
-1
mod Φ(N) = 79
-1
mod 10812
10812 = 136 . 79 + 68 1 = 11 - 5 . 2
79 = 1 . 68 + 11 = 11 - 5 . (68 - 6 . 11)
68 = 6 . 11 + 2 = (-5) . 68 + 31 . 11
11 = 5 . 2 + 1 = (-5) . 68 + 31 . (79 – 1 . 68)
= 31 . 79 + (-36) . 68
= 31 . 79 + (-36) . (10812 – 136 . 79)
= (-36) . 10812 + 4927 . 79
Vậy d = 4927 mod 10812
Hay d = e
-1
= 79
-1
mod 11021 = 4927 mod 11021
Từ đó ta có : M = 1889
4927
mod 11021
Ta có : 4927 = 4096 + 512 + 256 + 32 + 16 + 8 + 4 + 2 + 1
= 2
12
+ 2
9
+ 2
8
+ 2
5
+ 2
4
+ 2
3
+ 2
2
+ 2
1
+ 2
0
1889
0
2
5644
= 5644 mod 11021
1
2
5644
= 5644 . 5644 mod 11021 = 4046 mod 11021
2
2
5644
= 4046 . 4046 mod 11021 = 3931 mod 11021
3
2
5644
= 3931 . 3931 mod 11021 = 1319 mod 11021
4
2
5644
= 1319 . 1319 mod 11021 = 9464 mod 11021
5
2
5644
= 9464 . 9464 mod 11021 = 10650 mod 11021
6
2
5644
= 10650 . 10650 mod 11021 = 5389 mod 11021
7
2
5644
= 5389 . 5389 mod 11021 = 986 mod 11021
8
2
5644
= 986 . 986 mod 11021 = 2348 mod 11021
9
2
5644
= 2348 . 2348 mod 11021 = 2604 mod 11021
10
2
5644
= 2604 . 2604 mod 11021 = 2901 mod 11021
9 | P a g e
11
2
5644
= 2901 . 2901 mod 11021 = 6778 mod 11021
12
2
5644
= 6778 . 6778 mod 11021 = 5756 mod 11021
5644
10742
= 5644 . 4046 . 3931 . 1319 . 9464 . 10650 . 2348 . 2604 . 5756 mod 11021
= 112 . 5119 . 4555 . 6999 mod 11021
= 1803 mod 11021
Vậy C = 2962 mod 11021
Hay ta có thể viết là C = 2962 + k . 11021. Với k = 7 ta có giá trị C = M = 80109 (giá
trị ban đầu)
10 | P a g e