암호학 (Cryptology)/code
[Python3] 블록 암호 및 스트림 암호 (차분 공격 - DDT 구현)
oolongeya
2021. 8. 17. 12:32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# Difference distribution table, ddt 출력
def p():
print("")
print("-"*52)
def pr():
print("-"*52)
print("")
ddt = [[0 for col in range(16)] for row in range(16)]
s_box = [ 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7 ]
df = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
# 입출력 차분관계에 따른 빈도 증가 기록
for i in range(16):
for j in range(16):
ddt[i^j][s_box[i]^s_box[j]] += 1
# ddt 출력
p()
print(" ", end = "")
for i in range(16):
print("%02d" %df[i], end = " ")
p()
for i in range(16):
print("%02d | " %df[i], end = "")
for j in range(16):
print("%02d" %ddt[i][j], end = " ")
print("")
pr()
----------------------------------------------------
>> output
----------------------------------------------------
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
----------------------------------------------------
00 | 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01 | 00 04 00 02 02 02 00 02 00 00 00 02 00 00 02 00
02 | 00 00 00 00 00 00 00 00 06 00 00 02 00 06 02 00
03 | 00 00 00 02 00 00 02 00 00 02 02 02 04 02 00 00
04 | 00 00 00 00 00 00 00 04 00 00 00 00 04 00 00 08
05 | 00 00 02 00 02 00 00 00 02 02 00 02 02 00 04 00
06 | 00 02 06 00 02 00 00 02 00 00 00 00 00 00 00 04
07 | 00 02 00 04 02 02 02 00 00 00 02 00 02 00 00 00
08 | 00 02 02 00 00 00 00 00 06 00 04 02 00 00 00 00
09 | 00 00 00 02 00 00 02 00 00 04 00 02 00 00 02 04
10 | 00 00 04 00 00 06 02 00 00 02 02 00 00 00 00 00
11 | 00 02 02 02 02 00 02 02 00 00 00 02 00 00 02 00
12 | 00 00 00 00 02 02 02 06 00 00 00 00 00 04 00 00
13 | 00 02 00 04 02 00 04 00 00 02 00 00 02 00 00 00
14 | 00 00 00 00 00 04 00 00 00 02 06 00 00 02 02 00
15 | 00 02 00 00 02 00 00 00 02 02 00 02 02 02 02 00
----------------------------------------------------
|
cs |
반응형