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