BÀI TẬP MƠN HỌC
AN TỒN VÀ BẢO MẬT THƠNG TIN
Sinh viên
Mã số
Lớp
: Nguyễn Tuấn Quang Sang
: 102170186
: 17T3
Đà Nẵng 2021
1.
MỤC LỤC
1. Bài 1 – Mã hóa đối xứng cổ điển..............................................................................4
1.1.
Thực hiện mã hóa cộng với K=18.........................................................................4
1.2.
Mã hóa affine với khóa k1= 7, k2 = 11..................................................................4
1.3.
Mã hóa Vigenère với khóa K = attack..................................................................5
1.4.
Mã hóa Hill Cipher với khóa K tự chọn................................................................5
1.5.
Mã hóa Playfair với khóa k tự chọn......................................................................6
1.6.
Mã hóa Autokey với K = 18.................................................................................9
2. Bài 2 – Mã hóa đối xứng hiện đại.............................................................................9
2.1.
Mã hóa bằng thuật tốn AES................................................................................9
2.2.
Mã hóa bằng thuật tốn RC6..............................................................................10
3. Bài 3 – Hàm băm.....................................................................................................12
3.1.
Tính giá trị MD5.................................................................................................12
3.2.
Tính giá trị SHA-1..............................................................................................13
4. Bài 4 – Mã hóa bất đối xứng...................................................................................15
4.1.
Mã hóa RSA với p = 7, q = 11...........................................................................15
4.2.
Mã hóa ElGamal với p = 31, a = 11, x = 6 và k = 22.........................................15
5. Bài 5: Mã hóa Elliptic..............................................................................................18
Các ký hiệu................................................................................................................... 20
2
BÀI TẬP MÃ HĨA & BẢO MẬT THƠNG TIN
Bài 1. Cho văn bản gốc P = <hovaten>. Giải thích các bước thực hiện mã hóa P và giải
mã trên trường số ngun Z26 sử dụng các thuật tốn mã hóa sau :
a) Mã hóa cộng với khóa K = 18
b) Mã hóa affine với khóa k1= 7, k2 = 11
c) Mã hóa AutoCipher với K = 18.
d) Mã hóa Vigenère với khóa K = attack.
e) Mã hóa Hill Cipher với khóa K tự chọn.
f) Mã hóa Playfair với khóa K tự chọn.
Bài 2. Cho văn bản gốc P = <hovaten>. Thực hiện mã hố P theo :
Mã hóa AES với khóa K tự chọn. Giải thích các bước thực hiện.
Mã hóa RC6 với khóa K tự chọn. Giải thích các bước thực hiện.
Bài 3. Cho văn bản gốc P = <hovaten>. Giải thích các bước thực hiện:
Tính giá trị hàm băm MD5
Tính giá trị hàm băm SHA-1.
Bài 4. Cho văn bản gốc P = <ten>. Thực hiện mã hoá và giải mã từng ký tự trong P
theo :
Mã hóa RSA với (p = 7, q = 11) hoặc (p = 11, q = 17). Sử dụng lược đồ chữ
ký RSA để ký lên văn bản P.
Mã hóa ElGamal với p = 31, e1 = 11 và giá trị r tự chọn. Sử dụng lược đồ chữ
ký ElGamal để ký lên văn bản P.
Mã hóa Rabin với (p = 7, q = 11). Sử dụng lược đồ chữ ký Rabin để ký lên
văn bản P.
Bài 5. Mã hóa Elliptic: Cho E23(1, 0)
a) Tìm tất cả các điểm P của đường cong.
b) Chọn một điểm P. Tính các điểm 2P, 3P, 4P, 5P, …
c) Chọn một cặp điểm P, Q khác nhau: Tính R = P + Q.
3
b) Cho văn bản gốc M = <ten> với một số ngẫu nhiên k = 3. Hãy xác định bản mã
hóa C tương ứng.
c) Thực hiện giải mã C để nhận được văn bản gốc M ban đầu.
d) Sử dụng lược đồ chữ ký ECDSA để ký lên văn bản M.
2. Bài 1 – Mã hóa đối xứng cổ điển
Cho văn bản gốc P = nguyentuanquangsang
2.1. Thực hiện mã hóa cộng với K=18
- Bước 1: Chuyển tất cả các chữ cái sang giá trị nguyên tương ứng.
P
n
13
g
6
u y
20 24
e
4
n
1
3
t
u
19 20
a
0
n
1
3
q
1
6
u
2
0
a
0
n
1
3
g
6
s
1
8
a
0
n
1
3
-Bước 2: Thực hiện cộng các giá trị nguyên này với 18 rồi chia cho 26 lấy phần dư, ghi
vào bảng.
P
n g u y e n t u a n q u a n g s a n
1 6 2 2 4 1 1 2 0 1 1 2 0 1 6 1 0 1
3
0 4
3 9 0
3 6 0
3
8
3
K
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
P+K
3 2 3 4 2 3 3 3 1 3 3 3 1 3 2 3 1 3
1 4 8 2 2 1 7 8 8 1 4 8 8 1 4 6 8 1
(P+K)mod2 5 2 1 1 2 5 11 1 1 5 8 1 1 5 2 1 1 5
6
4 2 6 2
2 8
2 8
4 0 8
g
6
g
6
1
8
2
4
2
4
5
f
- Bước 3: Chuyển tất cả các giá trị nguyên này về lại chữ cái.
24 12 16 22 5 11 12 18 5
8 12 18 5
y
m q
w
f
l
m
s
f
i
m
s
f
24
y
10
k
18
s
5
f
24
y
n
13
- Tổng hợp lại ta có bảng sau:
g
u
y
e
n
t
u
6 20 24 4 13 19 20
a
0
n
13
q
16
u
20
a
0
n
13
g
6
s
18
a
0
n
13
g
6
18
18
18
18
18
18
18
18
18
18
18
18
18
18
18
18
18
18
18
5
24
12
16
22
5
11
12
18
5
8
12
18
5
24
10
18
5
24
4
f
y
m
q
w
f
l
m
s
f
i
m
s
f
y
k
g
6
s
1
8
s
f
y
2.2. Mã hóa affine với khóa k1= 7, k2 = 11
- Bước 1: Chuyển tất cả các chữ cái sang giá trị nguyên tương ứng.
P
n
13
g
6
u y
20 24
e
4
n
1
3
t
u
19 20
a
0
n
1
3
q
1
6
u
2
0
a
0
n
1
3
a
0
n
1
3
g
6
-Bước 2: Thực hiện nhân giá trị này với 7 rồi đem kết quả này cộng với 11, kết quả sau
cùng đem chia cho 26 lấy phần dư ghi vào bảng.
n
13
7
11
91
10
2
g
6
7
11
4
2
5
3
u
20
7
11
14
0
15
1
y
24
7
11
16
8
17
9
e
4
7
11
2
8
3
9
n
13
7
11
91
10
2
t
19
7
11
13
3
14
4
u
20
7
11
14
0
15
1
a
0
7
11
0
n
13
7
11
91
q
16
7
11
112
11
10
2
12
3
u
20
7
11
14
0
15
1
a
0
7
11
0
n
13
7
11
91
s
18
7
11
12
6
13
7
a
0
7
11
0
n
13
7
11
91
g
6
7
11
42
10
2
g
6
7
11
4
2
5
3
11
11
10
2
53
2
4
y
1
- Bước 3: Chuyển tất cả các giá trị nguyên này về lại chữ cái.
24
1
21
23
y
b
v
x
1
3
n
24
14
21
11
24
19
21
11
24
1
7
11
y
o
v
l
y
t
v
l
y
b
h
l
n
13
q
16
u
20
a
0
n
13
g
6
s
18
a
0
a
0
c
2
k
10
a
0
t
19
a
0
c
2
13
18
30
0
32
18
2
13
18
4
0
6
18
2
n
s
e
a
g
t
1
9
2
5
2
5
z
s
c
b
2.3. Mã hóa Vigenère với khóa K = attack
n
13
a
0
13
13
n
Tra cứu bảng mã hóa Vigenère ta có:
g
u
y
e
n
t
u
a
6 20 24 4 13 19 20 0
t
1
9
2
5
2
5
z
t
19
a
0
c
2
k
10
a
0
t
19
39
24
6
23
19
39
13
24
6
23
19
13
n
y
g
x
t
n
t
1
9
1
9
1
9
t
5
n
1
3
k
1
0
2
3
2
3
x
g
6
a
0
6
6
g
2.4. Mã hóa Hill Cipher với khóa K tự chọn
Thực hiện tính tốn
P = nguyentuanquangsang -> C = zlqaeahaaaeaaaqmaalv
2.5. Mã hóa Playfair với khóa k tự chọn.
Quy tắc thay thế của mã hóa Playfair:
Mã hóa từng cặp hai ký tự liên tiếp nhau
Nếu hai ký tự này giống nhau thì thêm một ký tự “X” vào giữa
Nếu dư một ký tự thì thêm ký tự “Q“vào cuối.
Nếu hai ký tự nằm cùng dịng thì được thay thế bằng hai ký tự tương ứng bên phải.
Ký tự ở cột cuối cùng được thay thế bằng ký tự ở cột đầu tiên.
Nếu hai ký tự nằm cùng cột thì được thay thế bằng hai ký tự tương ứng ở bên
dưới. Ký tự ở hàng dưới cùng sẽ được thay thế bằng ký tự ở hàng đầu tiên.
Nếu hai ký tự nằm hai góc của một hình chữ nhật thì được thay thế bằng hai ký tự
nằm ở hai góc cịn lại.
6
Các bước thực hiện:
Bước 1: Tách văn bản thành từng cặp ký tự
P = NG UY EN TU AN QU AN GS AN GQ
Bước 2: Tạo bảng mã hóa:
P
L
A
Y
F
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
P
Q
S
T
U
Bước 3: Áp dụng quy tắc mã hóa Playfair cho từng cặp
- NG -> MH
P
L
A
Y
F
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
P
Q
S
T
U
P
L
A
Y
F
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
P
Q
S
T
U
P
L
A
Y
F
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
P
Q
S
T
U
P
L
A
Y
F
- UY -> SC
- EN -> HL
- TU -> UP
7
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
P
Q
S
T
U
P
L
A
Y
F
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
P
Q
S
T
U
P
L
A
Y
F
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
P
Q
S
T
U
P
L
A
Y
F
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
P
Q
S
T
U
P
L
A
Y
F
I
R
Y
B
C
D
E
G
H
J
K
L
M
N
O
-AN ->YM
-QU ->SP
-GS ->MA
-GQ ->ES
8
P
Q
S
T
U
C = MH SC HL UP YM SP YM MA YM ES
2.6. Mã hóa Autokey với K = 18.
- Bước 1: Chọn từ khóa: key.
- Bước 2: Thực hiện ghép từ khóa vào văn bản thuần để có được khóa K (có độ dài bằng
với độ dài văn bản thuần): KHONGCOKEYDAUNHABAN
- Bước 3: Thực hiện mã hóa theo thuật tốn mã hóa Autokey với khóa K ở trên
P
K
C
N
K
X
G
H
N
U
O
Y
Y
N
L
E
G
K
N
C
P
T
O
H
U
K
D
A
E
E
N
Y
L
Q
D
T
U
A
U
A
U
U
N
N
A
G
H
N
S
A
S
A
B
B
N
A
N
G
N
T
3. Bài 2 – Mã hóa đối xứng hiện đại
Cho văn bản gốc P = quangsang
3.1. Mã hóa bằng thuật tốn AES
Plantext (input)
Key (input)
Ciphertext (output)
71
75
61
6e
0f
47
0c
af
7d
62
d9
8b
67
73
61
6e
15
d9
b7
7f
72
06
48
d9
67
00
00
00
71
e8
ad
67
24
3e
a5
ee
00
00
00
00
c9
59
d6
98
9d
31
da
7b
Chi tiết các bước mã hóa AES:
SubBytes
ShiftRows
MixColumns
AddRoundKey
0
1
2
Key Schedule
0f
47
0c
af
7e
20
6b
af
15
d9
b7
7f
60
aa
b7
7f
71
e8
ad
67
10
89
ad
67
c9
59
d6
98
a7
37
d6
98
f3
b7
7f
79
f3
b7
7f
79
c1
4c
c3
c8
dc
9b
97
38
ac
ac
ac
ac
d0
ac
a9
d2
ac
a9
d2
d0
52
36
1f
c6
90
49
fe
81
ac
ac
ac
ac
ca
a7
95
85
95
85
ca
a7
a4
eb
97
fd
37
df
72
15
ac
ac
ac
ac
5c
9a
f6
46
46
5c
9a
f6
bb
56
b6
0b
b0
e9
3f
a7
ac
ac
ac
ac
91
91
91
91
a4
0e
20
8c
76
bf
6f
d3
d2
49
de
e6
a4
f6
b1
35
9
3
4
5
6
7
8
9
10
91
91
91
91
d2
f8
a0
25
fa
78
0c
49
c9
80
7e
f
33
f8
72
b6
91
91
91
91
d9
9b
dc
18
77
a6
3b
6b
6b
b4
c6
d3
1c
12
fd
b8
91
91
91
91
91
2b
08
a7
c5
27
0c
e7
b7
5e
61
c6
72
79
6d
21
49
42
c8
96
49
42
c8
96
f8
68
73
9c
c0
89
57
b1
38
e1
24
2d
c3
41
40
4e
41
40
4e
c3
ca
36
5d
77
af
2f
51
ae
65
19
0c
d9
9c
c9
54
6c
54
6c
9c
c9
bc
1a
64
98
df
6b
ad
7e
63
71
c9
e6
40
b6
3c
fd
fd
40
b6
3c
2f
6a
e6
d3
39
67
06
c0
16
0d
e0
13
07
f8
36
d8
07
f8
36
d8
c9
3b
1f
3e
2c
a5
f2
43
e5
9e
ed
7d
4d
d4
fe
35
d4
fe
35
4d
b5
d1
9d
5d
5c
73
22
8c
e9
a2
bf
d1
f
a3
dd
8e
dd
8e
f
a3
f5
c8
8c
f0
65
0e
a3
dd
90
c6
2f
2d
47
d7
e1
7d
7d
47
d7
e1
fa
ed
21
44
f1
96
90
50
0b
7b
b1
14
d9
0b
55
f
d9
0b
55
f
08
fd
a9
bb
58
fd
0f
4c
50
00
a6
f7
1e
3a
08
3e
3a
08
3e
1e
68
43
a8
cc
9d
ee
cc
40
f5
ad
64
8c
60
b4
15
d8
15
d8
60
b4
dc
d5
c8
d1
36
38
9b
46
ea
ed
53
97
2b
21
c8
fa
fa
2b
21
c8
b0
9b
e3
3b
eb
7d
ed
bd
5b
e6
0e
86
53
63
24
68
53
63
24
68
ab
b2
ed
1f
ab
b2
ed
1f
da
3e
6e
d0
e6
95
43
64
95
43
64
e6
0a
5f
f0
eb
0a
5f
f0
eb
cd
76
15
4e
87
55
ed
88
ed
88
87
55
cb
60
dc
c2
cb
60
dc
c2
87
14
33
6b
39
8e
ab
44
44
39
8e
ab
05
1c
88
46
71
8c
83
cf
c7
a3
da
a9
57
b2
9f
70
57
b2
9f
70
f6
2d
49
91
37
bb
38
f7
c1
96
71
66
bd
38
59
2f
38
59
2f
bd
aa
47
f2
53
14
3d
d8
7d
be
7a
2a
2e
17
fa
c3
7f
c3
7f
17
fa
9c
44
80
db
93
e7
08
a1
0f
a3
88
7a
c6
0a
57
d3
d3
c6
0a
57
bf
7c
96
79
48
f7
a5
4a
f7
8b
33
33
78
90
a3
33
78
90
a3
33
82
bd
45
46
48
f3
cb
3c
ca
4e
8e
7a
ae
da
e5
31
da
e5
31
ae
43
5c
66
a9
26
1b
c3
be
65
47
a5
17
76
0a
c4
da
c4
da
76
0a
6f
62
39
d7
45
a2
aa
0b
2a
c0
93
dc
68
3d
c3
c3
c3
68
3d
c3
0b
44
c3
6c
20
d7
72
38
2b
93
b1
54
74
2f
19
da
74
2f
19
da
ef
23
00
0a
fd
0e
c5
f9
12
2d
c5
f3
4d
a0
06
f0
a0
06
f0
4d
70
43
0a
5d
0d
16
d5
6b
7d
55
df
36
e5
ba
dc
86
dc
86
e5
ba
17
36
47
bb
42
e0
4a
41
55
d6
0d
fa
f1
dc
c8
20
20
f1
dc
c8
a0
08
9d
09
cb
1c
6e
56
6b
14
f3
5f
c9
d8
a6
0d
c9
d8
a6
0d
7d
62
d9
8b
b4
ba
7f
86
f
fc
9e
05
fc
9e
05
f
72
06
48
d9
8e
98
4d
26
fc
f6
d7
2d
d7
2d
fc
f6
24
3e
a5
ee
f3
13
59
18
7f
fa
0d
cf
cf
7f
fa
0d
9d
31
da
7b
52
4e
20
76
10
3.2. Mã hóa bằng thuật tốn RC6
Input: Plaintext được lưu trong 4 thanh ghi w-bit A, B, C & D
r là số vịng
khóa vịng w-bit S[0, ... , 2r + 3]
Output: Ciphertext lưu trong A, B, C, D
'''Hàm mã hóa'''
B = B + S[0]
D = D + S[1]
for i = 1 to r do
{
t = (B*(2B + 1)) <<< lg w
u = (D*(2D + 1)) <<< lg w
A = ((A ⊕ t) <<< u) + S[2i]
C = ((C ⊕ u) <<< t) + S[2i + 1]
(A, B, C, D) = (B, C, D, A)
}
A = A + S[2r + 2]
C = C + S[2r + 3]
Kết quả:
Key: baitapmatmahoc
Input: quangsang
Original String list: [1903518062, 1735614830, 1730158624, 538976288]
Length of Input String: 16
Encrypted String list: [1068620080, 575488205, 2121520392, 2914785170]
Encrypted String: ?±Ù0"M@Í~s¼
Length of Encrypted String: 16
Decrypted: quangsang
Plantext: quangsang
Secret key: baitapmatmahoc
Ciphertext: ?±Ù0"M@Í~s¼
11
4. Bài 3 – Hàm băm
Cho văn bản gốc P =nguyentuanquangsang
4.1. Tính giá trị MD5
64-ELEMENT TABLE 'T':
T[0]=3614090360
T[4]=4118548399
T[8]=1770035416
T[12]=1804603682
T[16]=4129170786
T[20]=3593408605
T[24]=568446438
T[28]=2850285829
T[32]=4294588738
T[36]=2763975236
T[40]=681279174
T[44]=3654602809
T[48]=4096336452
T[52]=1700485571
T[56]=1873313359
T[60]=4149444226
T[1]=3905402710
T[5]=1200080426
T[9]=2336552879
T[13]=4254626195
T[17]=3225465664
T[21]=38016083
T[25]=3275163606
T[29]=4243563512
T[33]=2272392833
T[37]=1272893353
T[41]=3936430074
T[45]=3873151461
T[49]=1126891415
T[53]=2399980690
T[57]=4264355552
T[61]=3174756917
T[2]=606105819
T[6]=2821735955
T[10]=4294925233
T[14]=2792965006
T[18]=643717713
T[22]=3634488961
T[26]=4107603335
T[30]=1735328473
T[34]=1839030562
T[38]=4139469664
T[42]=3572445317
T[46]=530742520
T[50]=2878612391
T[54]=4293915773
T[58]=2734768916
T[62]=718787259
T[3]=3250441966
T[7]=4249261313
T[11]=2304563134
T[15]=1236535329
T[19]=3921069994
T[23]=3889429448
T[27]=1163531501
T[31]=2368359562
T[35]=4259657740
T[39]=3200236656
T[43]=76029189
T[47]=3299628645
T[51]=4237533241
T[55]=2240044497
T[59]=1309151649
T[63]=3951481745
s[2]=17
s[6]=17
s[10]=17
s[14]=17
s[18]=14
s[22]=14
s[26]=14
s[30]=14
s[34]=16
s[38]=16
s[42]=16
s[46]=16
s[50]=15
s[54]=15
s[58]=15
s[62]=15
s[3]=22
s[7]=22
s[11]=22
s[15]=22
s[19]=20
s[23]=20
s[27]=20
s[31]=20
s[35]=23
s[39]=23
s[43]=23
s[47]=23
s[51]=21
s[55]=21
s[59]=21
s[63]=21
OPERATION TABLE 's':
s[0]=7
s[4]=7
s[8]=7
s[12]=7
s[16]=5
s[20]=5
s[24]=5
s[28]=5
s[32]=4
s[36]=4
s[40]=4
s[44]=4
s[48]=6
s[52]=6
s[56]=6
s[60]=6
s[1]=12
s[5]=12
s[9]=12
s[13]=12
s[17]=9
s[21]=9
s[25]=9
s[29]=9
s[33]=11
s[37]=11
s[41]=11
s[45]=11
s[49]=10
s[53]=10
s[57]=10
s[61]=10
MDBUFFER:
words A=1732584193, B=4023233417, C=2562383102, D=271733878
Thông điệp được sau khi thêm= 'nguyentuanquangsang?'
Chiều dài=56
Tổng số khối=1
Block 0 contains:
[0]2037737326
[1]1970564709
[2]1970368097
[3]1936158305
[4]2154262113
[5]0
[6]0
[7]0
12
[8]0
[9]0
[10]0
[11]0
[12]0
[13]0
[14]152
[15]0
Chiều dài sau khi thêm =512 bits [nên là bội của 512]
OPERATIONS:
[Block=0]
[i =
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
0] A=1607704113, B=4023233417, C=2562383102, D=271733878
= 1] A=1607704113, B=4023233417, C=2562383102, D=3827540502
= 2] A=1607704113, B=4023233417, C=1942660686, D=3827540502
= 3] A=1607704113, B=934209526, C=1942660686, D=3827540502
= 4] A=3641715674, B=934209526, C=1942660686, D=3827540502
= 5] A=3641715674, B=934209526, C=1942660686, D=974229969
= 6] A=3641715674, B=934209526, C=3804235075, D=974229969
= 7] A=3641715674, B=383518381, C=3804235075, D=974229969
= 8] A=3221817443, B=383518381, C=3804235075, D=974229969
= 9] A=3221817443, B=383518381, C=3804235075, D=2834507492
= 10] A=3221817443, B=383518381, C=1806571644, D=2834507492
= 11] A=3221817443, B=541085555, C=1806571644, D=2834507492
= 12] A=1180798045, B=541085555, C=1806571644, D=2834507492
= 13] A=1180798045, B=541085555, C=1806571644, D=3786414434
= 14] A=1180798045, B=541085555, C=932626033, D=3786414434
= 15] A=1180798045, B=935966669, C=932626033, D=3786414434
= 16] A=1730455178, B=935966669, C=932626033, D=3786414434
= 17] A=1730455178, B=935966669, C=932626033, D=3826058268
= 18] A=1730455178, B=935966669, C=1799435428, D=3826058268
= 19] A=1730455178, B=584651924, C=1799435428, D=3826058268
= 20] A=913737729, B=584651924, C=1799435428, D=3826058268
= 21] A=913737729, B=584651924, C=1799435428, D=2292680211
= 22] A=913737729, B=584651924, C=846535733, D=2292680211
= 23] A=913737729, B=4286151885, C=846535733, D=2292680211
= 24] A=1487388239, B=4286151885, C=846535733, D=2292680211
= 25] A=1487388239, B=4286151885, C=846535733, D=1891523233
= 26] A=1487388239, B=4286151885, C=2372296061, D=1891523233
= 27] A=1487388239, B=2010984091, C=2372296061, D=1891523233
= 28] A=2228491451, B=2010984091, C=2372296061, D=1891523233
= 29] A=2228491451, B=2010984091, C=2372296061, D=2115731566
= 30] A=2228491451, B=2010984091, C=440122153, D=2115731566
= 31] A=2228491451, B=3546525017, C=440122153, D=2115731566
= 32] A=2491543308, B=3546525017, C=440122153, D=2115731566
= 33] A=2491543308, B=3546525017, C=440122153, D=3490007591
= 34] A=2491543308, B=3546525017, C=4106381799, D=3490007591
= 35] A=2491543308, B=1501770176, C=4106381799, D=3490007591
= 36] A=421055762, B=1501770176, C=4106381799, D=3490007591
= 37] A=421055762, B=1501770176, C=4106381799, D=1107558295
= 38] A=421055762, B=1501770176, C=4203802028, D=1107558295
= 39] A=421055762, B=2808993042, C=4203802028, D=1107558295
= 40] A=3265201448, B=2808993042, C=4203802028, D=1107558295
= 41] A=3265201448, B=2808993042, C=4203802028, D=2835590995
= 42] A=3265201448, B=2808993042, C=3036593964, D=2835590995
= 43] A=3265201448, B=1816423215, C=3036593964, D=2835590995
= 44] A=1327068735, B=1816423215, C=3036593964, D=2835590995
= 45] A=1327068735, B=1816423215, C=3036593964, D=1718949755
= 46] A=1327068735, B=1816423215, C=2902733124, D=1718949755
= 47] A=1327068735, B=2811860611, C=2902733124, D=1718949755
= 48] A=2106426294, B=2811860611, C=2902733124, D=1718949755
= 49] A=2106426294, B=2811860611, C=2902733124, D=2538519998
13
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
=
=
=
=
=
=
=
=
=
=
=
=
=
=
50]
51]
52]
53]
54]
55]
56]
57]
58]
59]
60]
61]
62]
63]
A=2106426294, B=2811860611, C=2167716731, D=2538519998
A=2106426294, B=2976630826, C=2167716731, D=2538519998
A=2675927680, B=2976630826, C=2167716731, D=2538519998
A=2675927680, B=2976630826, C=2167716731, D=4261210657
A=2675927680, B=2976630826, C=548657909, D=4261210657
A=2675927680, B=1753026926, C=548657909, D=4261210657
A=3853191172, B=1753026926, C=548657909, D=4261210657
A=3853191172, B=1753026926, C=548657909, D=3588263506
A=3853191172, B=1753026926, C=1481705809, D=3588263506
A=3853191172, B=4015640739, C=1481705809, D=3588263506
A=211110376, B=4015640739, C=1481705809, D=3588263506
A=211110376, B=4015640739, C=1481705809, D=324312376
A=211110376, B=4015640739, C=869607735, D=324312376
A=211110376, B=4232878767, C=869607735, D=324312376
Block=0 Processed:
A=1943694569
B=3961144888
C=3431990837
D=596046254
Kết quả:
A_Hex=73da6ce9
B_Hex=ec1a4638
C_Hex=cc900635
D_Hex=2386f1ae
Kết quả cuối cùng:
MD5("nguyentuanquangsang")=e96cda7338461aec350690ccaef18623
4.2. Tính giá trị SHA-1
Giá trị ban đầu:
H0=1732584193,
H1=4023233417,
H2=2562383102,
H3=271733878,
H5=3285377520
Thông điệp được sau khi thêm= nguyentuanquangsang?'
Chiều dài=56
Tổng số khối=1
Block 0 contains:
[0]1852274041
[1]1701737589
[2]1634627957
[3]1634625395
[4]1634625408
[5]0
[6]0
[7]0
[8]0
[9]0
[10]0
[11]0
[12]0
[13]0
14
[14]0
[15]152
[16]504498200
[17]134227468
[18]11482
[19]4277722838
[20]3537666840
[21]22964
[22]4260478381
[23]2780366593
[24]1009034072
[25]3957536579
[26]1265784759
[27]2243492637
[28]1920952502
[29]2531532086
[30]3434519888
[31]3213660743
[32]1772434777
[33]2740626835
[34]1279579236
[35]634032716
[36]4229031713
[37]4264767438
[38]1364337618
[39]462326344
[40]3246513393
[41]950441023
[42]3717120602
[43]3996078381
[44]4110224880
[45]363513290
[46]886945260
[47]3880476889
[48]3818254349
[49]366357529
[50]354493325
[51]2894477637
[52]2563885620
[53]3396110211
[54]286320404
[55]3110431028
[56]1810682442
[57]2761825343
[58]175049255
[59]2044657616
[60]4175354927
[61]1707364718
[62]2131540555
[63]1716384695
[64]4047020361
[65]3313854032
[66]3282313299
[67]3692675263
[68]1765093055
[69]2865970965
[70]3016925013
[71]621236230
[72]1959824482
[73]1445869013
[74]673533114
[75]1772602567
[76]1905457693
[77]50307821
15
[78]2827125024
[79]4005199865
Chiều dài sau khi thêm =512 bits [nên là bội của 512]
OPERATIONS:
[Block=0]
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0] A=236719660, B=1732584193, C=2079550178, D=2562383102, E=271733878
1] A=2409694979, B=236719660, C=1506887872, D=2079550178, E=2562383102
2] A=3267367231, B=2409694979, C=59179915, D=1506887872, E=2079550178
3] A=3820470185, B=3267367231, C=3823649216, D=59179915, E=1506887872
4] A=1350640277, B=3820470185, C=4038067279, D=3823649216, E=59179915
5] A=1327895575, B=1350640277, C=2028859370, D=4038067279, E=3823649216
6] A=333341964, B=1327895575, C=1411401893, D=2028859370, E=4038067279
7] A=1005128535, B=333341964, C=3553199365, D=1411401893, E=2028859370
8] A=2826560015, B=1005128535, C=83335491, D=3553199365, E=1411401893
9] A=2126549366, B=2826560015, C=3472507605, D=83335491, E=3553199365
10] A=2472315058, B=2126549366, C=3927865475, D=3472507605, E=83335491
11] A=3041229745, B=2472315058, C=2679120989, D=3927865475, E=3472507605
12] A=3443434165, B=3041229745, C=2765562412, D=2679120989, E=3927865475
13] A=2607443777, B=3443434165, C=1834049260, D=2765562412, E=2679120989
14] A=3578890453, B=2607443777, C=1934600365, D=1834049260, E=2765562412
15] A=551940036, B=3578890453, C=1725602768, D=1934600365, E=1834049260
16] A=1761772057, B=551940036, C=1968464437, D=1725602768, E=1934600365
17] A=1551957395, B=1761772057, C=137985009, D=1968464437, E=1725602768
18] A=1842435811, B=1551957395, C=1514184838, D=137985009, E=1968464437
19] A=3778296307, B=1842435811, C=3609214820, D=1514184838, E=137985009
20] A=1361637927, B=3778296307, C=3681834424, D=3609214820, E=1514184838
21] A=3684269556, B=1361637927, C=4165799548, D=3681834424, E=3609214820
22] A=690835760, B=3684269556, C=3561634953, D=4165799548, E=3681834424
23] A=223329632, B=690835760, C=921067389, D=3561634953, E=4165799548
24] A=415530042, B=223329632, C=172708940, D=921067389, E=3561634953
25] A=2038013185, B=415530042, C=55832408, D=172708940, E=921067389
26] A=843254322, B=2038013185, C=2251366158, D=55832408, E=172708940
27] A=1130032807, B=843254322, C=1583245120, D=2251366158, E=55832408
28] A=976718611, B=1130032807, C=2358297228, D=1583245120, E=2251366158
29] A=1685378487, B=976718611, C=3503733673, D=2358297228, E=1583245120
30] A=2398853459, B=1685378487, C=3465405124, D=3503733673, E=2358297228
31] A=345634751, B=2398853459, C=3642570093, D=3465405124, E=3503733673
32] A=3590333311, B=345634751, C=3820938836, D=3642570093, E=3465405124
33] A=3472951416, B=3590333311, C=3307634159, D=3820938836, E=3642570093
34] A=1693826383, B=3472951416, C=4118808799, D=3307634159, E=3820938836
35] A=381848437, B=1693826383, C=868237854, D=4118808799, E=3307634159
36] A=2870589153, B=381848437, C=3644682067, D=868237854, E=4118808799
37] A=3255019195, B=2870589153, C=1169203933, D=3644682067, E=868237854
38] A=1811260536, B=3255019195, C=1791389112, D=1169203933, E=3644682067
39] A=3486506535, B=1811260536, C=4034980270, D=1791389112, E=1169203933
40] A=4212059995, B=3486506535, C=452815134, D=4034980270, E=1791389112
41] A=1865716608, B=4212059995, C=4092852105, D=452815134, E=4034980270
42] A=1069402124, B=1865716608, C=4274240470, D=4092852105, E=452815134
43] A=2415209518, B=1069402124, C=466429152, D=4274240470, E=4092852105
44] A=3061838058, B=2415209518, C=267350531, D=466429152, E=4274240470
45] A=2205515764, B=3061838058, C=2751286027, D=267350531, E=466429152
46] A=4134930499, B=2205515764, C=2912943162, D=2751286027, E=267350531
47] A=4178909040, B=4134930499, C=551378941, D=2912943162, E=2751286027
48] A=3727770254, B=4178909040, C=4254958096, D=551378941, E=2912943162
49] A=307711610, B=3727770254, C=1044727260, D=4254958096, E=551378941
50] A=236540484, B=307711610, C=3079426211, D=1044727260, E=4254958096
51] A=850331052, B=236540484, C=2224411550, D=3079426211, E=1044727260
52] A=1118885112, B=850331052, C=59135121, D=2224411550, E=3079426211
53] A=1773570470, B=1118885112, C=212582763, D=59135121, E=2224411550
54] A=1580630356, B=1773570470, C=279721278, D=212582763, E=59135121
55] A=461776474, B=1580630356, C=2590876265, D=279721278, E=212582763
16
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
[i
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
56]
57]
58]
59]
60]
61]
62]
63]
64]
65]
66]
67]
68]
69]
70]
71]
72]
73]
74]
75]
76]
77]
78]
79]
A=2460335440, B=461776474, C=395157589, D=2590876265, E=279721278
A=3031128772, B=2460335440, C=2262927766, D=395157589, E=2590876265
A=1611230038, B=3031128772, C=615083860, D=2262927766, E=395157589
A=3328119713, B=1611230038, C=757782193, D=615083860, E=2262927766
A=2140171910, B=3328119713, C=2550291157, D=757782193, E=615083860
A=3126194988, B=2140171910, C=1905771752, D=2550291157, E=757782193
A=1465821476, B=3126194988, C=2682526625, D=1905771752, E=2550291157
A=145645905, B=1465821476, C=781548747, D=2682526625, E=1905771752
A=690954358, B=145645905, C=366455369, D=781548747, E=2682526625
A=2308770399, B=690954358, C=1110153300, D=366455369, E=781548747
A=1863368016, B=2308770399, C=2320222237, D=1110153300, E=366455369
A=3764990209, B=1863368016, C=3798418071, D=2320222237, E=1110153300
A=2317738239, B=3764990209, C=465842004, D=3798418071, E=2320222237
A=1577600443, B=2317738239, C=2014989376, D=465842004, E=3798418071
A=195092248, B=1577600443, C=3800660031, D=2014989376, E=465842004
A=1139119605, B=195092248, C=3615625582, D=3800660031, E=2014989376
A=1923878761, B=1139119605, C=48773062, D=3615625582, E=3800660031
A=4012642421, B=1923878761, C=1358521725, D=48773062, E=3615625582
A=3494481037, B=4012642421, C=1554711514, D=1358521725, E=48773062
A=597870319, B=3494481037, C=2076902429, D=1554711514, E=1358521725
A=4168190622, B=597870319, C=1947362083, D=2076902429, E=1554711514
A=1689935437, B=4168190622, C=3370693051, D=1947362083, E=2076902429
A=3397871813, B=1689935437, C=3189531303, D=3370693051, E=1947362083
A=2422950652, B=3397871813, C=1496225683, D=3189531303, E=3370693051
Block=0 Processed:
H0=4155534845,
H1=3126137934,
H2=4058608785,
H3=3461265181,
H4=2361103275
Giá trị cuối cùng:
H0_Hex=f7b06dfd
H1_Hex=ba55144e
H2_Hex=f1e97491
H3_Hex=ce4eb71d
H4_Hex=8cbb93ab
Kết quả: SHA1("nguyentuanquangsang")=f7b06dfdba55144ef1e97491ce4eb71d8cbb93ab
17
5. Bài 4 – Mã hóa bất đối xứng
Cho văn bản gốc P = sang
5.1. Mã hóa RSA với p = 7, q = 11
1) Tính n: n = p*q = 7*11 = 77
2) Tính Φ: Φ(n) = (p-1)(q-1) = (7-1)(11-1) = 60
3) Chọn e sao cho 1 < e < Φ(n), e và Φ(n) là hai số nguyên tố cùng nhau. Nghĩa là có
UCLN là 1.
4) Chọn e = 7 => Khóa cơng khai: (7, 77)
(*)
Tìm d?
Ta có: d*e mod Φ(n) = 1 <=> d*e = k* Φ(n) +1 <=> d*7 = k*60 +1
Chọn k = 5 => d= 43 => Khóa bí mật: (43,60) (**)
Khóa cơng khai (e, n)
Khóa bí mật (d, Φ(n))
- Mã hóa:
+ Mã hóa ký tự S = 18: C = Me mod n = 187 mod 77 = 39
+ Mã hóa ký tự A = 0: C = Me mod n = 07 mod 77 = 0
+ Mã hóa ký tự N = 13: C = Me mod n = 137 mod 77 = 62
+ Mã hóa ký tự G = 6: C = Me mod n = 67 mod 77 = 41
- Giải mã:
+ Giải mã ký tự 39: M = Cd mod n = 3943 mod 60 = 18 (≡ S : giải mã đúng)
+ Giải mã ký tự 0: M = Cd mod n = 043 mod 60 = 0 (≡ A : giải mã đúng)
+ Giải mã ký tự 62: M = Cd mod n = 6243 mod 60 = 13 (≡ N : giải mã đúng)
+ Giải mã ký tự 41: M = Cd mod n = 4143 mod 60 = 6 (≡ G : giải mã đúng)
<script src=””/> <script src=””/>
5.2. Mã hóa ElGamal với p = 31, a = 11, x = 6 và k = 22.
Ta có: y = xa mod p = 611 mod 31= 26
a. Mã hóa: C1 = xk mod p = 622 mod 31 = 25
+ Mã hóa ký tự S = 18:
C2(T=19) = (T*yk) mod p
= ((T mod p)( yk mod p)) mod p
18
= ((18 mod 31)( 2622 mod 31)) mod 31
= (18*5) mod 31
= 28
=> ET(C1,C2) = (25,2)
+ Mã hóa ký tự A = 0:
C2(A=0) = (A*yk) mod p
= ((A mod p)( yk mod p)) mod p
= ((0 mod 31)( 2622 mod 31)) mod 31
= (0.5) mod 31
=0
=> EA(C1,C2) = (25,0)
+ Mã hóa ký tự N = 13:
C2(M=12) = (M*yk) mod p
= ((M mod p)( yk mod p)) mod p
= ((13 mod 31)( 2622 mod 31)) mod 31
= (13.5) mod 31
=3
=> EA(C1,C2) = (25,29)
+ Mã hóa ký tự G = 6:
C2(M=12) = (M*yk) mod p
= ((M mod p)( yk mod p)) mod p
= ((6 mod 31)( 2622 mod 31)) mod 31
= (6.5) mod 31
= 30
=> EA(C1,C2) = (25,29)
b. Giải mã:
+ Giải mã ký tự (25,28):
(C2*(C1a)-1) mod p
= (28*(2511)-1) mod 31
= ((28 mod 31)( (2511)-1 mod 31)) mod 31
= (28.(2531-11-1 mod 31)) mod 31
= (28.(2519 mod 31)) mod 31
19
= (28.25) mod 31
= 18 (≡ S : giải mã đúng)
+ Giải mã ký tự (25,0):
(C2*(C1a)-1) mod p
= (0*(2511)-1) mod 31
= ((0 mod 31)( (2511)-1 mod 31)) mod 31
= (0.(2531-11-1 mod 31)) mod 31
= (0.(2519 mod 31)) mod 31
= (0.25) mod 31
= 0 (≡ A : giải mã đúng)
+ Giải mã ký tự (25,3):
(C2*(C1a)-1) mod p
= (3*(2511)-1) mod 31
= ((3 mod 31)( (2511)-1 mod 31)) mod 31
= (3.(2531-11-1 mod 31)) mod 31
= (3.(2519 mod 31)) mod 31
= (3.25) mod 31
= (3.25) mod 31
= 13 (≡ N : giải mã đúng)
+ Giải mã ký tự (25,30):
(C2*(C1a)-1) mod p
= (30*(2511)-1) mod 31
= ((30 mod 31)( (2511)-1 mod 31)) mod 31
= (30.(2531-11-1 mod 31)) mod 31
= (30.(2519 mod 31)) mod 31
= (30.25) mod 31
= (30.25) mod 31
= 6 (≡ G : giải mã đúng)
20
6. Bài 5: Mã hóa Elliptic
Mã hóa Elliptic: Cho E71(4, -6).
P = 71, a = 4, b= -6, G= (2,9), n= 73, h = 1
d=7
Chọn khóa riêng từ người gửi k = 1 suy ra: kG = (2,9)
Khóa riêng của người nhận d =7, người nhận tính khóa cơng khai: dG = 7G
R = 7G:
G(x, y) = (2,9)
Tính Q(x2, y2) = 2G : λ = mod p = mod p = 64
x2 = λ2 – 2x mod p = 642 - 2*2 mod 71 = 45
21
y2 = λ(x – x2) – y mod p = 64(2- 45) -9 mod 71 = 8
Tính T(x4, y4) = 2Q = 4G:
λ = mod p = mod p = 56
x4 = = λ2 – 2x2 mod p = 562 - 2*45 mod 71 = 64
y4 = λ(x2 – x4) – y2 mod p = 56(45- 64) -8 mod 71 = 64
Tính S(x3,y3) = 3G = G(2,9) + Q(45,8)
λ = mod p = mod 71 = 33
x3 = = λ2 – x2 – x mod p = 332 - 45-2 mod 71 = 48
y3 = λ(x2 – x4) – y2 mod p = 33(45- 48) -8 mod 71 = 35
Tính R(x7, y7) = 7G = T(64,64) + S(48,35)
λ = mod p = mod 71 = 24
x7 = = λ2 – x3 - x4 mod p = 242 - 48-64 mod 71 = 38
y7 = λ(x3 – x7) – y3 mod p = 24(48- 38) - 35 mod 71 = 63
Suy ra dG = (38,63)
Mã hóa M(16, 6)
M + k* dG = (16,6) + 1 * 7 *(2,9) = (16,6) + (38,63)
λ = mod p = mod p = 57 * 22-1 mod 71 = 57 * 42 mod 71
= 51
x = λ2 – xM - xR mod p = 512 - 16-38 mod 71 = 62
y = λ(xR – x) – yM mod p = 51(38- 62) - 63 mod 71 = 62
Người gửi sẽ gửi bộ [kG, M+kdG] = [(2,9), (62,62)]
Giải mã:
M = (M + kdG) – d*kG = (M + 7G) -7G = (62,62) – (38,63) = (62, 62) + (38, -63)
Với λ = 20, x = 16, y = 6
M = (16, 6) (Đúng)
------------------------------------
22
Các ký hiệu
P (Plan text): văn bản thuần chưa mã hóa
K (Key): khóa dùng để mã hóa
C (Cipher text): văn bản đã được mã hóa
E (Encryption): hàm mã hóa
D (Decryption): hàm giải mã
23