-
Notifications
You must be signed in to change notification settings - Fork 0
/
02 Constant Time Functions.py
56 lines (45 loc) · 1.39 KB
/
02 Constant Time Functions.py
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
# Constant Time Functions
# Constant Time Functions are used for countering side-channel timing attacks
# constant_time.bytes_eq() internally calls hmac.compare_digest()
# Importing Libraries/Modules
from cryptography.hazmat.primitives import constant_time
import time
import os
# Class for Constant Time Function
class Constant():
def compare(self, bytes_data_1, bytes_data_2):
result = constant_time.bytes_eq(bytes_data_1, bytes_data_2)
return result
# Constant Time Functions
print("Constant Time Functions:")
# Creating Object
constant = Constant()
# Test 1
bytes_data_1 = b"My name is Khan"
bytes_data_2 = b"My name is Khan"
result = constant.compare(bytes_data_1, bytes_data_2)
print(result)
# Test 2
bytes_data_1 = b"My name is Khan"
bytes_data_2 = b"My name is Ajmi"
result = constant.compare(bytes_data_1, bytes_data_2)
print(result)
# Test 3 (Bulk)
total_time = 0
for _ in range(100000):
bytes_data = os.urandom(15000)
start_time = time.time()
constant.compare(bytes_data, bytes_data)
time_taken = time.time() - start_time
total_time += time_taken
print(total_time)
# Test 4 (Bulk)
total_time = 0
for _ in range(100000):
bytes_data_1 = os.urandom(15000)
bytes_data_2 = os.urandom(15000)
start_time = time.time()
constant.compare(bytes_data_1, bytes_data_2)
time_taken = time.time() - start_time
total_time += time_taken
print(total_time)