You are on page 1of 22

TRƯỜNG …

BÀI TẬP MÔN HỌC


AN TOÀN VÀ BẢO MẬT THÔNG TIN

Sinh viên :
Mã số :
Lớp :

Đà Nẵng 2019
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................................................................6
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.................................................................................8
2. Bài 2 – Mã hóa đối xứng hiện đại.............................................................................9
2.1. Mã hóa bằng thuật toán AES................................................................................9
2.2. Mã hóa bằng thuật toán RC6..............................................................................10
3. Bài 3 – Hàm băm.....................................................................................................11
3.1. Tính giá trị MD5.................................................................................................11
3.2. Tính giá trị SHA-1..............................................................................................14
4. Bài 4 – Mã hóa bất đối xứng.....................................................................................18
4.1. Mã hóa RSA với p = 7, q = 11...........................................................................18
4.2. Mã hóa ElGamal với p = 31, a = 11, x = 6 và k = 22.........................................18
4.3. 3. Bảng S-Box thuận...........................................................................................21
4.4. 4. Các ký hiệu thường dùng:...............................................................................21

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ố 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 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ã 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.

3
2. Bài 1 – Mã hóa đối xứng cổ điển

Cho văn bản gốc P = hokimtam


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 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

- Tổng hợp lại ta có bảng sau:

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

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 h o k i m t a m

4
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 +
8 5 3 15 17 14 11 17
K2) mod 26

- Bước 3: Chuyển tất cả các giá trị nguyên này về lại chữ cái

8 5 3 15 17 14 11 17
I F D P R O L R

- Tổng hợp lại ta có bảng sau:

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

2.3. Mã hóa Vigenère với khóa K = attack


Tra cứu bảng mã hóa Vigenère.

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

5
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

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

2.4. Mã hóa Hill Cipher với khóa K tự chọn

( )( )( )( ) ( )( )( )( )
P= H K M A = 7 10 12 0
O I T M 14 8 19 12

K= 5 5
6 7( )
Thực hiện tính toán

(56 57)(147 )=(56 xx 7+5


7+7 x 14 ) (140) (10)
x 14 mod 26= 105 mod 26= 1

(56 57)(108)=(56 xx 10+5


10+7 x 8 ) (116) (12)
x 8 mod 26= 90 mod 26= 12

(56 57)(1219)=(56 xx 12+5


12+7 x 19 ) (205 ) (23)
x 19 mod 26= 155 mod 26= 25

(56 57)(120 )=( 56 xx 0+5


0+7 x 12) ( 84) (6 )
x 12 mod 26= 60 mod 26= 8

( )( )( )( ) ( )( )( )( )
C= 1 12 25 8 = B M Z I
10 12 23 6 K M X G

P = HOKIMTAM -> C = BKMMZXIG

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
6
 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.

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 = HOKIMTAM => P = HO KI MT AM
Bước 2: Tạo bảng mã hóa:

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

Bước 3: Áp dụng quy tắc mã hóa Playfair cho từng cặp

- 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
7
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

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): 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

8
3. Bài 2 – Mã hóa đối xứng hiện đại
Cho văn bản gốc P = hokimtan
3.1. Mã hóa bằng thuật toán AES

Plantext (input) Key (input) Ciphertext (output)

4 4 D 8 2
48 49 F6 0C F3 C9 A2
F B 2 9 A

4 5 4 C 4 B 3
41 6E 7C BB 0B
D 4 D E 9 B B

0 A E 6 A 6
00 00 00 8E F3 7F
0 C A 7 D D

0 A 1 F
00 00 00 F8 6C 8B 6F D8
0 D F E

Chi tiết các bước mã hóa AES:

SubBytes ShiftRows MixColumns AddRoundKey Key Schedule

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

7 22 ED 02 10 22 ED 02 10 E6 3D C4 16 7F AB DA CD 99 96 1E DB

9
99 B2 1B 5E B2 1B 5E 99 D1 A8 B4 56 26 74 50 2A F7 DC E4 7C

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

3.2. Mã hóa bằng thuật toá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ả:
Plantext: hokimtam
Secret key: 2b7e151628aed2a6abf71589
Ciphertext: PTtVED2HNvoQvKJFj8Igdg==

10
4. Bài 3 – Hàm băm
Cho văn bản gốc P = HOKIMTAM
4.1. Tính giá trị MD5
64-ELEMENT TABLE 'T' :

T[0]=3614090360 T[1]=3905402710 T[2]=606105819 T[3]=3250441966


T[4]=4118548399 T[5]=1200080426 T[6]=2821735955 T[7]=4249261313
T[8]=1770035416 T[9]=2336552879 T[10]=4294925233 T[11]=2304563134
T[12]=1804603682 T[13]=4254626195 T[14]=2792965006 T[15]=1236535329
T[16]=4129170786 T[17]=3225465664 T[18]=643717713 T[19]=3921069994
T[20]=3593408605 T[21]=38016083 T[22]=3634488961 T[23]=3889429448
T[24]=568446438 T[25]=3275163606 T[26]=4107603335 T[27]=1163531501
T[28]=2850285829 T[29]=4243563512 T[30]=1735328473 T[31]=2368359562
T[32]=4294588738 T[33]=2272392833 T[34]=1839030562 T[35]=4259657740
T[36]=2763975236 T[37]=1272893353 T[38]=4139469664 T[39]=3200236656
T[40]=681279174 T[41]=3936430074 T[42]=3572445317 T[43]=76029189
T[44]=3654602809 T[45]=3873151461 T[46]=530742520 T[47]=3299628645
T[48]=4096336452 T[49]=1126891415 T[50]=2878612391 T[51]=4237533241
T[52]=1700485571 T[53]=2399980690 T[54]=4293915773 T[55]=2240044497
T[56]=1873313359 T[57]=4264355552 T[58]=2734768916 T[59]=1309151649
T[60]=4149444226 T[61]=3174756917 T[62]=718787259 T[63]=3951481745

OPERATION TABLE 's':

s[0]=7 s[1]=12 s[2]=17 s[3]=22 s[4]=7 s[5]=12


s[6]=17 s[7]=22 s[8]=7 s[9]=12 s[10]=17 s[11]=22
s[12]=7 s[13]=12 s[14]=17 s[15]=22 s[16]=5 s[17]=9
s[18]=14 s[19]=20 s[20]=5 s[21]=9 s[22]=14 s[23]=20
s[24]=5 s[25]=9 s[26]=14 s[27]=20 s[28]=5 s[29]=9
s[30]=14 s[31]=20 s[32]=4 s[33]=11 s[34]=16 s[35]=23
s[36]=4 s[37]=11 s[38]=16 s[39]=23 s[40]=4 s[41]=11
s[42]=16 s[43]=23 s[44]=4 s[45]=11 s[46]=16 s[47]=23
s[48]=6 s[49]=10 s[50]=15 s[51]=21 s[52]=6 s[53]=10
s[54]=15 s[55]=21 s[56]=6 s[57]=10 s[58]=15 s[59]=21
s[60]=6 s[61]=10 s[62]=15 s[63]=21

MDBUFFER:

words A=1732584193, B=4023233417, C=2562383102, D=271733878

Thông điệp được sau khi thêm= 'hokimtam?'


Chiều dài=56
Tổng số khối=1
Block 0 contains:
[0]1768648552
[1]1835103341
[2]128
[3]0
[4]0

11
[5]0
[6]0
[7]0
[8]0
[9]0
[10]0
[11]0
[12]0
[13]0
[14]64
[15]0
Chiều dài sau khi thêm =512 bits [nên là bội của 512]

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 = 4] A=1195672053, B=820021093, C=64826783, D=4023983677
[i = 5] A=1195672053, B=820021093, C=64826783, D=4032947576
[i = 6] A=1195672053, B=820021093, C=3736190739, D=4032947576
[i = 7] A=1195672053, B=1970381379, C=3736190739, D=4032947576
[i = 8] A=4042434181, B=1970381379, C=3736190739, D=4032947576
[i = 9] A=4042434181, B=1970381379, C=3736190739, D=2054575654
[i = 10] A=4042434181, B=1970381379, C=4236836463, D=2054575654
[i = 11] A=4042434181, B=644271779, C=4236836463, D=2054575654
[i = 12] A=1882306063, B=644271779, C=4236836463, D=2054575654
[i = 13] A=1882306063, B=644271779, C=4236836463, D=3918755930
[i = 14] A=1882306063, B=644271779, C=3680734025, D=3918755930
[i = 15] A=1882306063, B=2683950797, C=3680734025, D=3918755930
[i = 16] A=2489203642, B=2683950797, C=3680734025, D=3918755930
[i = 17] A=2489203642, B=2683950797, C=3680734025, D=4050946103
[i = 18] A=2489203642, B=2683950797, C=355003653, D=4050946103
[i = 19] A=2489203642, B=2205118800, C=355003653, D=4050946103
[i = 20] A=2191889997, B=2205118800, C=355003653, D=4050946103
[i = 21] A=2191889997, B=2205118800, C=355003653, D=3272037689
[i = 22] A=2191889997, B=2205118800, C=1840263565, D=3272037689
[i = 23] A=2191889997, B=1393229800, C=1840263565, D=3272037689
[i = 24] A=3662035914, B=1393229800, C=1840263565, D=3272037689
[i = 25] A=3662035914, B=1393229800, C=1840263565, D=1828760458
[i = 26] A=3662035914, B=1393229800, C=3886560892, D=1828760458
[i = 27] A=3662035914, B=1501572312, C=3886560892, D=1828760458
[i = 28] A=1405904449, B=1501572312, C=3886560892, D=1828760458
[i = 29] A=1405904449, B=1501572312, C=3886560892, D=1154083787
[i = 30] A=1405904449, B=1501572312, C=768708675, D=1154083787
[i = 31] A=1405904449, B=1622169347, C=768708675, D=1154083787
[i = 32] A=933042152, B=1622169347, C=768708675, D=1154083787
[i = 33] A=933042152, B=1622169347, C=768708675, D=4248091169
[i = 34] A=933042152, B=1622169347, C=3915644841, D=4248091169
[i = 35] A=933042152, B=3240439705, C=3915644841, D=4248091169
[i = 36] A=3022207546, B=3240439705, C=3915644841, D=4248091169
12
[i = 37] A=3022207546, B=3240439705, C=3915644841, D=2143412581
[i = 38] A=3022207546, B=3240439705, C=3214003276, D=2143412581
[i = 39] A=3022207546, B=1309407309, C=3214003276, D=2143412581
[i = 40] A=4290043539, B=1309407309, C=3214003276, D=2143412581
[i = 41] A=4290043539, B=1309407309, C=3214003276, D=3939478946
[i = 42] A=4290043539, B=1309407309, C=1931320723, D=3939478946
[i = 43] A=4290043539, B=1836718868, C=1931320723, D=3939478946
[i = 44] A=1352120880, B=1836718868, C=1931320723, D=3939478946
[i = 45] A=1352120880, B=1836718868, C=1931320723, D=750365492
[i = 46] A=1352120880, B=1836718868, C=1364545352, D=750365492
[i = 47] A=1352120880, B=1946492976, C=1364545352, D=750365492
[i = 48] A=2208760837, B=1946492976, C=1364545352, D=750365492
[i = 49] A=2208760837, B=1946492976, C=1364545352, D=3231993139
[i = 50] A=2208760837, B=1946492976, C=1748561876, D=3231993139
[i = 51] A=2208760837, B=3472793218, C=1748561876, D=3231993139
[i = 52] A=23746338, B=3472793218, C=1748561876, D=3231993139
[i = 53] A=23746338, B=3472793218, C=1748561876, D=217584069
[i = 54] A=23746338, B=3472793218, C=311452707, D=217584069
[i = 55] A=23746338, B=3521572464, C=311452707, D=217584069
[i = 56] A=1954472196, B=3521572464, C=311452707, D=217584069
[i = 57] A=1954472196, B=3521572464, C=311452707, D=1824007650
[i = 58] A=1954472196, B=3521572464, C=717852174, D=1824007650
[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

Kết quả cuối cùng:


MD5("hokimtam") = 6f8b2038a0481fefba1575aea1827d11

13
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= 'hokimtam?'


Chiều dài=56
Tổng số khối=1

Block 0 contains:
[0]1752132457
[1]1836343661
[2]2147483648
[3]0
[4]0
[5]0
[6]0
[7]0
[8]0
[9]0
[10]0
[11]0
[12]0
[13]0
[14]0
[15]64
[16]3504264915
[17]3672687322
[18]129
[19]2713562535
[20]3050407349
[21]258
[22]1132157775
[23]1805847531
[24]2713563043
[25]858207019
[26]3611694804
[27]1032
[28]233663805
[29]2928422701
[30]659231529
[31]2035107993
[32]3219041721
[33]3732053758
[34]934655730
[35]1019611688
[36]1248483954
14
[37]3845465709
[38]4070038491
[39]3611710550
[40]1478518086
[41]1065673740
[42]1957769882
[43]2496956567
[44]3197206740
[45]2357913222
[46]4256029625
[47]2647655883
[48]3112382742
[49]1094407878
[50]696104867
[51]3913886601
[52]2393812854
[53]789071421
[54]2091294043
[55]4151850447
[56]1949581807
[57]765152781
[58]675962948
[59]172361967
[60]3222500397
[61]741444200
[62]1704787510
[63]3607111135
[64]2448857701
[65]3236666089
[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
15
[i = 5] A=1811763765, B=3410379674, C=2485768959, D=15843389, E=4129909886
[i = 6] A=1359474563, B=1811763765, C=3000078566, D=2485768959, E=15843389
[i = 7] A=860076846, B=1359474563, C=1526682765, D=3000078566, E=2485768959
[i = 8] A=1241188163, B=860076846, C=3561094112, D=1526682765, E=3000078566
[i = 9] A=2779968137, B=1241188163, C=2362502859, D=3561094112, E=1526682765
[i = 10] A=145825341, B=2779968137, C=3531522512, D=2362502859, E=3561094112
[i = 11] A=3445295580, B=145825341, C=1768733858, D=3531522512, E=2362502859
[i = 12] A=1831043549, B=3445295580, C=1110198159, D=1768733858, E=3531522512
[i = 13] A=832449732, B=1831043549, C=861323895, D=1110198159, E=1768733858
[i = 14] A=449025304, B=832449732, C=1531502711, D=861323895, E=1110198159
[i = 15] A=141182690, B=449025304, C=208112433, D=1531502711, E=861323895
[i = 16] A=3041710235, B=141182690, C=112256326, D=208112433, E=1531502711
[i = 17] A=1047788979, B=3041710235, C=2182779320, D=112256326, E=208112433
[i = 18] A=3089265038, B=1047788979, C=3981653030, D=2182779320, E=112256326
[i = 19] A=3013243527, B=3089265038, C=3483172716, D=3981653030, E=2182779320
[i = 20] A=3036810952, B=3013243527, C=2919799907, D=3483172716, E=3981653030
[i = 21] A=3464301415, B=3036810952, C=3974536353, D=2919799907, E=3483172716
[i = 22] A=1233109343, B=3464301415, C=759202738, D=3974536353, E=2919799907
[i = 23] A=3361264716, B=1233109343, C=4087300825, D=759202738, E=3974536353
[i = 24] A=2688074162, B=3361264716, C=3529502807, D=4087300825, E=759202738
[i = 25] A=3220324244, B=2688074162, C=840316179, D=3529502807, E=4087300825
[i = 26] A=2021145819, B=3220324244, C=2819502188, D=840316179, E=3529502807
[i = 27] A=1982576218, B=2021145819, C=805081061, D=2819502188, E=840316179
[i = 28] A=1943985297, B=1982576218, C=3726511926, D=805081061, E=2819502188
[i = 29] A=3373863921, B=1943985297, C=2643127702, D=3726511926, E=805081061
[i = 30] A=428755737, B=3373863921, C=1559738148, D=2643127702, E=3726511926
[i = 31] A=7532502, B=428755737, C=1917207804, D=1559738148, E=2643127702
[i = 32] A=299973233, B=7532502, C=1180930758, D=1917207804, E=1559738148
[i = 33] A=448973265, B=299973233, C=2149366773, D=1180930758, E=1917207804
[i = 34] A=1221407988, B=448973265, C=1148735132, D=2149366773, E=1180930758
[i = 35] A=3931136976, B=1221407988, C=1185985140, D=1148735132, E=2149366773
[i = 36] A=3446883393, B=3931136976, C=305351997, D=1185985140, E=1148735132
[i = 37] A=96699772, B=3446883393, C=982784244, D=305351997, E=1185985140
[i = 38] A=1181170424, B=96699772, C=1935462672, D=982784244, E=305351997
[i = 39] A=1900427476, B=1181170424, C=24174943, D=1935462672, E=982784244
[i = 40] A=2383169276, B=1900427476, C=295292606, D=24174943, E=1935462672
[i = 41] A=349649511, B=2383169276, C=475106869, D=295292606, E=24174943
[i = 42] A=3158240371, B=349649511, C=595792319, D=475106869, E=295292606
[i = 43] A=3527064799, B=3158240371, C=3308637849, D=595792319, E=475106869
[i = 44] A=1452160154, B=3527064799, C=4010785564, D=3308637849, E=595792319
[i = 45] A=3627026184, B=1452160154, C=4102991671, D=4010785564, E=3308637849
[i = 46] A=1317996391, B=3627026184, C=2510523686, D=4102991671, E=4010785564
[i = 47] A=3263101394, B=1317996391, C=906756546, D=2510523686, E=4102991671
[i = 48] A=2744900839, B=3263101394, C=3550724569, D=906756546, E=2510523686
[i = 49] A=2879717262, B=2744900839, C=2963258996, D=3550724569, E=906756546
[i = 50] A=383862027, B=2879717262, C=3907450681, D=2963258996, E=3550724569
[i = 51] A=3503835868, B=383862027, C=2867412963, D=3907450681, E=2963258996
[i = 52] A=2488597899, B=3503835868, C=3317190978, D=2867412963, E=3907450681
[i = 53] A=4070770566, B=2488597899, C=875958967, D=3317190978, E=2867412963
[i = 54] A=2671828091, B=4070770566, C=3843374946, D=875958967, E=3317190978
[i = 55] A=681503494, B=2671828091, C=3165176289, D=3843374946, E=875958967
[i = 56] A=140791722, B=681503494, C=3889182494, D=3165176289, E=3843374946
[i = 57] A=1525621394, B=140791722, C=2317859521, D=3889182494, E=3165176289
16
[i = 58] A=1549234390, B=1525621394, C=2182681578, D=2317859521, E=3889182494
[i = 59] A=2521778806, B=1549234390, C=2528888996, D=2182681578, E=2317859521
[i = 60] A=662498094, B=2521778806, C=2534792245, D=2528888996, E=2182681578
[i = 61] A=2893011, B=662498094, C=2777928349, D=2534792245, E=2528888996
[i = 62] A=3795519638, B=2893011, C=2313108171, D=2777928349, E=2534792245
[i = 63] A=2889524043, B=3795519638, C=3221948724, D=2313108171, E=2777928349
[i = 64] A=892392374, B=2889524043, C=3096363557, D=3221948724, E=2313108171
[i = 65] A=2416408234, B=892392374, C=3943606482, D=3096363557, E=3221948724
[i = 66] A=2738885689, B=2416408234, C=2370581741, D=3943606482, E=3096363557
[i = 67] A=2635985984, B=2738885689, C=2751585706, D=2370581741, E=3943606482
[i = 68] A=3374295564, B=2635985984, C=1758463246, D=2751585706, E=2370581741
[i = 69] A=1482091340, B=3374295564, C=658996496, D=1758463246, E=2751585706
[i = 70] A=2913375514, B=1482091340, C=843573891, D=658996496, E=1758463246
[i = 71] A=90289845, B=2913375514, C=370522835, D=843573891, E=658996496
[i = 72] A=3065140820, B=90289845, C=2875827526, D=370522835, E=843573891
[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.

Giá trị cuối cùng:


H0_Hex=bedcf8c0
H1_Hex=de9b0be3
H2_Hex=44c0bd3f
H3_Hex=7a05f57b
H4_Hex=6aa33152

Kết quả: SHA1("hokimtam") = bedcf8c0de9b0be344c0bd3f7a05f57b6aa33152

17
5. Bài 4 – Mã hóa bất đối xứng
Cho văn bản gốc P = tam
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ự T = 19: C = Me mod n = 197 mod 77 = 19
+ Mã hóa ký tự A = 0: C = Me mod n = 07 mod 77 = 0
+ Mã hóa ký tự M = 12: C = Me mod n = 127 mod 77 = 48
- Giải mã:
+ Giải mã ký tự 19: M = Cd mod n = 1943 mod 60 = 19 (≡ T : giải mã đúng)
+ Giải mã ký tự 0: M = Cd mod n = 07 mod 60 = 0 (≡ A : giải mã đúng)
+ Giải mã ký tự 48: M = Cd mod n = 487 mod 60 = 12 (≡ M : giải mã đúng)

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
- Mã hóa: C1 = xk mod p = 622 mod 31 = 25
+ Mã hóa ký tự T = 19:
C2(T=19) = (T*yk) mod p
= ((T mod p)( yk mod p)) mod p
= ((19 mod 31)( 2622 mod 31)) mod 31
= (19.5) mod 31
=2
=> ET(C1,C2) = (25,2)
+ Mã hóa ký tự A = 0:
18
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ự M = 12:
C2(M=12) = (M*yk) mod p
= ((M mod p)( yk mod p)) mod p
= ((12 mod 31)( 2622 mod 31)) mod 31
= (12.5) mod 31
= 29
=> EA(C1,C2) = (25,29)

- Giải mã:
+ Giải mã ký tự (25,2):
(C2*(C1a)-1) mod p
= (2*(2511)-1) mod 31
= ((2 mod 31)( (2511)-1 mod 31)) mod 31
= (2.(2531-11-1 mod 31)) mod 31
= (2.(2519 mod 31)) mod 31
= (2.25) mod 31
= 19 (≡ T : 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,29):
(C2*(C1a)-1) mod p
19
= (29*(2511)-1) mod 31
= ((29 mod 31)( (2511)-1 mod 31)) mod 31
= (29.(2531-11-1 mod 31)) mod 31
= (29.(2519 mod 31)) mod 31
= (29.25) mod 31
= (29.25) mod 31
= 12 (≡ M : giải mã đúng)

------------------------------------

20
5.3. 3. Bảng S-Box thuận

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
A e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
B e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
C ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
D 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
E e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
F 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16

5.4. 4. Các ký hiệu thường dùng:


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ã

21

You might also like