From 1aa9b18009e0a981dae03dab0a3086ff0c5d8b93 Mon Sep 17 00:00:00 2001 From: Daniel <59575049+lemoentjiez@users.noreply.github.com> Date: Sat, 10 Dec 2022 21:32:16 +0200 Subject: [PATCH] Update rsa.py --- LabMD_2/rsa.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/LabMD_2/rsa.py b/LabMD_2/rsa.py index 8b13789..8c52966 100644 --- a/LabMD_2/rsa.py +++ b/LabMD_2/rsa.py @@ -1 +1,62 @@ +def gcd(x, y): + if x > y: + small = y + else: + small = x + for i in range(1, small + 1): + if (x % i == 0) and (y % i == 0): + gcd = i + return gcd + + +def is_coprime(a, b): + if gcd(a, b) == 1: + return 1 + return 0 + + +def get_modular_inverse(a, m): + for x in range(1, m): + if ((a % m) * (x % m)) % m == 1: + return x + return 0 + + +def get_e(p, q): + for x in range(2, phi): + if is_coprime(x, phi): + return x + return "Error" + + +# Starting data +decrypted = 95384 +p = 281 +q = 283 +n = p * q +phi = (p - 1) * (q - 1) + +# Calculated data +e = get_e(p, q) +d = get_modular_inverse(e, phi) +encrypted = pow(decrypted, e) % n +decrypted = pow(encrypted, d) % n + +# Output +print("=================") +print("Public key:") +print((n, e)) +print("=================") +print("Private key:") +print((n, d)) +print("=================") +print("Initial message:") +print(decrypted) +print("=================") +print("Encrypted message:") +print(encrypted) +print("=================") +print("Decrypted message:") +print(decrypted) +print("=================")