Cryptography-HW5/part3/speed_test.py
2025-10-27 14:32:30 -05:00

71 lines
1.5 KiB
Python

import time
import hmac
import hashlib
import secrets
m = input("Message: ").encode()
key = secrets.token_bytes(16)
sig_gen_times = []
sig_ver_times = []
# HMAC
for n in range(100):
start = time.time()
hmac_object = hmac.new(key, m, hashlib.sha256)
end = time.time()
sig_gen_times.append(end - start)
start = time.time()
assert hmac_object.digest() == hmac.new(key, m, hashlib.sha256).digest()
end = time.time()
sig_ver_times.append(end - start)
avg_gen_time = (sum(sig_gen_times)/len(sig_gen_times)) * 1000
avg_ver_time = (sum(sig_ver_times)/len(sig_ver_times)) * 1000
print(f"Average HMAC Generation Time: {avg_gen_time} ms")
print(f"Average HMAC Verification Time: {avg_ver_time} ms")
# RSA
from Crypto.PublicKey import RSA
from Crypto.Signature import pss
from Crypto.Hash import SHA256
sig_gen_times = []
sig_ver_times = []
key = RSA.generate(2048)
for n in range(100):
start = time.time()
h = SHA256.new(m)
signer = pss.new(key)
signature = signer.sign(h)
end = time.time()
sig_gen_times.append(end - start)
public_key = key.publickey()
start = time.time()
h = SHA256.new(m)
verifier = pss.new(public_key)
verifier.verify(h, signature)
end = time.time()
sig_ver_times.append(end - start)
avg_gen_time = (sum(sig_gen_times)/len(sig_gen_times)) * 1000
avg_ver_time = (sum(sig_ver_times)/len(sig_ver_times)) * 1000
print(f"Average RSA Signature Generation Time: {avg_gen_time} ms")
print(f"Average RSA Signature Verification Time: {avg_ver_time} ms")