암호학 (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 = [ 1441312151183106125907 ]
df = [0123456789101112131415]
 
 
# 입출력 차분관계에 따른 빈도 증가 기록
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

반응형