Professional Documents
Culture Documents
(SHARE) Mon MatMaHoc - Danh Sach Bai Tap Huong Dan Giai
(SHARE) Mon MatMaHoc - Danh Sach Bai Tap Huong Dan Giai
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ố nguyên Z26 sử dụng các thuật toá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 AutoKey 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ã hoá 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.
------------------------------------
2. THAM KHẢO – HƯỚNG DẪN GIẢI BÀI TẬP
Bài 1. Mã hóa đối xứng cổ điển
P h o k i m t a m
7 14 10 8 12 19 0 12
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.
A 7 14 10 8 12 19 0 12
B 18 18 18 18 18 18 18 18
A+B 25 32 28 26 30 37 18 30
(A + B) mod 26 25 6 2 0 4 11 18 4
Bước 3: Chuyển tất cả các giá trị nguyên này về lại chữ cái.
25 6 2 0 4 11 18 4
Z G C A E L S E
P h o k i m t a m
7 14 10 8 12 19 0 12
K 18 18 18 18 18 18 18 18
C 25 6 2 0 4 11 18 4
Z G C A E L S E
P h o k i m t a m
7 14 10 8 12 19 0 12
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.
A 7 14 10 8 12 19 0 12
k1 7 7 7 7 7 7 7 7
k2 11 11 11 11 11 11 11 11
A*k1 49 98 70 56 84 133 0 84
A*k1 + k2 60 109 81 67 95 144 11 95
(A*k1 + k2)
8 5 3 15 17 14 11 17
mod 26
Bước 3: Chuyển tất cả các giá trị nguyên này về lại chữ cái.
P h o k i m t a m
7 14 10 8 12 19 0 12
k1 7 7 7 7 7 7 7 7
k2 11 11 11 11 11 11 11 11
C 8 5 3 15 17 14 11 17
I F D P R O L R
P H O K I M T A M
K a t t a c k a t
C H I D I O D A F
P L A Y F
A I R B C
D E G H J
K L M N O
P Q S T U
- HO -> JN
P L A Y F
A I R B C
D E G H J
K L M N O
P Q R S T
- KI -> LA
P L A Y F
A I R B C
D E G H J
K L M N O
P Q R S T
- MT ->OR
P L A Y F
A I R B C
D E G H J
K L M N O
P Q S T U
- AM -> RR
P L A Y F
A I R B C
D E G H J
K L M N O
P Q R S T
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): keyhokim
Bước 3: Thực hiện mã hóa theo thuật toán mã hóa Autokey với khóa K ở trên
P H O K I M T A M
K k e y h o k i m
C R S I P A D I Y
48 4F 4B 49 D2 F6 0C F3 89 C9 A2 2A
4
54 41 4D 6E 7C CE BB 49 BB 0B 3B
D
00 00 00 00 8E AC EA F3 67 7F AD 6D
00 00 00 00 F8 6C 8B AD 1F 6F D8 FE
Chi tiết các bước mã hóa AES:
9A B9 47 BA D2 F6 0C F3
23 28 8F F6 6E 7C CE BB
0
8E AC EA F3 8E AC EA F3
F8 6C 8B AD F8 6C 8B AD
B8 56 A0 F4 B8 56 A0 F4 25 75 D4 35 1C BA 17 05 39 CF C3 30
26 34 73 42 34 73 42 26 D7 E6 5F 2D B4 F9 8E 47 63 1F D1 6A
1
19 91 87 0D 87 0D 19 91 3D FC 20 AC 26 4B 7D 02 1B B7 5D AE
41 50 3D 95 95 41 50 3D 51 06 00 CA A4 9F 12 75 F5 99 12 BF
9C F4 F0 6B 9C F4 F0 6B F1 E6 2C 20 C8 10 19 25 39 F6 35 05
8D 99 19 A0 99 19 A0 8D 32 16 72 6D B5 8E 3B 4E 87 98 49 23
2
F7 B3 FF 77 FF 77 F7 B3 5C D8 D3 DB 4F 7C 2A 8C 13 A4 F9 57
49 DB C9 9D 9D 49 DB C9 F8 FB F1 0A 09 93 8B CF F1 68 7A C5
E8 CA D4 3F E8 CA D4 3F 8F D7 9A 37 94 3A 42 EA 1B ED D8 DD
D5 19 E2 2F 19 E2 2F D5 64 B8 C1 83 B8 FC CC AD DC 44 0D 2E
3
84 10 E5 64 E5 64 84 10 A5 E3 97 8D 10 F2 7F 32 B5 11 E8 BF
01 DC 3D 8A 8A 01 DC 3D D0 C1 6F FE 4A 33 E7 B3 9A F2 88 4D
22 80 2C 87 22 80 2C 87 30 33 F5 BC 12 FC E2 76 22 CF 17 CA
6C B0 4B 95 B0 4B 95 6C 59 A5 9B 4B 8D 35 06 F8 D4 90 9D B3
4
CA 89 D2 23 D2 23 CA 89 9A EC 68 45 CC AB C7 55 56 47 AF 10
D6 C3 94 6D 6D D6 C3 94 DE 44 B6 44 85 ED 97 28 5B A9 21 6C
C9 B0 98 38 C9 B0 98 38 DA A1 F6 7D 85 31 71 30 5F 90 87 4D
5D 96 6F 41 96 6F 41 5D 9B E6 92 AC 85 68 81 0C 1E 8E 13 A0
5
4B 62 C6 FC C6 FC 4B 62 94 9E B0 22 92 DF 5E DC 06 41 EE FE
97 55 88 34 34 97 55 88 78 6D 13 7C 57 EB B4 B7 2F 86 A7 CB
97 C7 A3 04 97 C7 A3 04 0B 5C E2 B9 94 53 6A 7C 9F 0F 88 C5
97 45 0C FE 45 0C FE 97 5C 15 7C 05 F9 3E 44 9D A5 2B 38 98
6
4F 9E 58 86 58 86 4F 9E 82 31 E3 38 9B 69 55 70 19 58 B6 48
5B E9 8D A9 A9 5B E9 8D F6 6E 86 04 3A 24 6B 22 CC 4A ED 26
22 ED 02 10 22 ED 02 10 E6 3D C4 16 7F AB DA CD 99 96 1E DB
99 B2 1B 5E B2 1B 5E 99 D1 A8 B4 56 26 74 50 2A F7 DC E4 7C
7
14 F9 FC 51 FC 51 14 F9 DD CF 2E E1 33 79 2E A9 EE B6 00 48
80 36 7F 93 93 80 36 7F 15 7D 20 AE 7F 5D ED 45 6A 20 CD EB
D2 62 57 BD D2 62 57 BD 4D 30 15 80 44 AF 94 DA 09 9F 81 5A
F7 92 53 E5 92 53 E5 F7 D0 78 94 DC 75 01 09 3D A5 79 9D E1
8
C3 B6 31 D3 31 D3 C3 B6 90 E1 FB C2 97 50 4A 3B 07 B1 B1 F9
D2 4C 55 6E 6E D2 4C 55 12 99 47 37 C1 6A 79 E2 D3 F3 3E D5
1B 79 22 57 1B 79 22 57 FC 6B A7 F7 16 1E 53 59 EA 75 F4 AE
9D 7C 01 27 7C 01 27 9D 1A 3E ED 35 26 7B 35 0C 3C 45 D8 39
9
88 53 D6 E2 D6 E2 88 53 63 2F 08 AD 67 9A 0C 50 04 B5 04 FD
78 02 B6 98 98 78 02 B6 AC 98 CD 40 C1 06 6D 35 6D 9E A0 75
47 72 ED CB 47 72 ED CB 89 C9 A2 2A CE BB 4F E1
F7 21 96 FE 21 96 FE F7 49 BB 0B 3B 68 2D F5 CC
10
85 B8 FE 53 FE 53 85 B8 67 7F AD 6D 99 2C 28 D5
78 6F 3C 96 96 78 6F 3C 1F 6F D8 FE 89 17 B7 C2
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ả:
Plantext: hokimtam
Secret key: 2b7e151628aed2a6abf71589
Ciphertext: PTtVED2HNvoQvKJFj8Igdg==
MDBUFFER:
OPERATIONS:
[Block=0]
[i = 0] A=1524079401, B=4023233417, C=2562383102, D=271733878
[i = 1] A=1524079401, B=4023233417, C=2562383102, D=4023983677
[i = 2] A=1524079401, B=4023233417, C=64826783, D=4023983677
[i = 3] A=1524079401, B=820021093, C=64826783, D=4023983677
…
[i = 59] A=1954472196, B=2426829349, C=717852174, D=1824007650
[i = 60] A=3504040046, B=2426829349, C=717852174, D=1824007650
[i = 61] A=3504040046, B=2426829349, C=717852174, D=21704235
[i = 62] A=3504040046, B=2426829349, C=364525756, D=21704235
[i = 63] A=3504040046, B=4283538711, C=364525756, D=21704235
Block=0 Processed:
A=941656943
B=4011804832
C=2926908858
D=293438113
Kết quả:
A_Hex=38208b6f
B_Hex=ef1f48a0
C_Hex=ae7515ba
D_Hex=117d82a1
H0=1732584193,
H1=4023233417,
H2=2562383102,
H3=271733878,
H5=3285377520
Block 0 contains:
[0]1752132457
[1]1836343661
[2]2147483648
…
[66]2972891804
[67]3152281212
[68]3856775635
[69]2330363404
[70]2916858365
[71]3490041757
[72]2396814212
[73]2514144236
[74]316457681
[75]646975230
[76]2875846729
[77]3323451092
[78]4265846432
[79]3641639364
Chiều dài sau khi thêm =512 bits [nên là bội của 512]
OPERATIONS:
[Block=0]
[i = 0] A=136578076, B=1732584193, C=2079550178, D=2562383102, E=271733878
[i = 1] A=3634737659, B=136578076, C=1506887872, D=2079550178, E=2562383102
[i = 2] A=63373556, B=3634737659, C=34144519, D=1506887872, E=2079550178
[i = 3] A=1353141246, B=63373556, C=4129909886, D=34144519, E=1506887872
[i = 4] A=3410379674, B=1353141246, C=15843389, D=4129909886, E=34144519
[i = 5] A=1811763765, B=3410379674, C=2485768959, D=15843389, E=4129909886
…
[i = 73] A=552463355, B=3065140820, C=1096314285, D=2875827526, E=370522835
[i = 74] A=1838570909, B=552463355, C=766285205, D=1096314285, E=2875827526
[i = 75] A=2604744074, B=1838570909, C=3359341310, D=766285205, E=1096314285
[i = 76] A=2806940693, B=2604744074, C=1533384551, D=3359341310, E=766285205
[i = 77] A=2954330374, B=2806940693, C=2798669666, D=1533384551, E=3359341310
[i = 78] A=4006436954, B=2954330374, C=1775476997, D=2798669666, E=1533384551
[i = 79] A=1469568447, B=4006436954, C=2886066241, D=1775476997, E=2798669666
Block=0 Processed:
H0=3202152640,
H1=3734703075,
H2=1153482047,
H3=2047210875,
H4=1789079890.
λ= mod p = mod p = 64
x2 = λ – 2x mod p = 64 - 2*2 mod 71 = 45
2 2
λ= mod p = mod p = 56
x4 = = λ – 2x2 mod p = 56 - 2*45 mod 71 = 64
2 2
λ= 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 = = λ – x3 - x4 mod p = 24 - 48-64 mod 71 = 38
2 2
Mã hóa M(16, 6)
M + k* dG = (16, 6) + 1 * 7 *(2, 9) = (16, 6) + (38, 63)
------------------------------------
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ã