PRACTICAL 6: DIFFIE-HELLMAN KEY EXCHANGE ALGORITHM

import random

p, g = 19, 5
a, b = random.randint(1, p - 2), random.randint(1, p - 2)
A, B = pow(g, a, p), pow(g, b, p)
ka, kb = pow(B, a, p), pow(A, b, p)

print(f"Public parameters:\nPrime (p): {p}\nPrimitive root (g): {g}\n")
print("Alice's private key:", a, "\nAlice's public key:", A)
print("Bob's private key:", b, "\nBob's public key:", B)
print("\nShared key computed by Alice:", ka)
print("Shared key computed by Bob:", kb)
print("\nKey exchange successful!! Shared symmetric key established." if ka == kb else "\nKey exchange failed.")
