killchain-compendium/Cryptography/RSA.md

1.6 KiB

RSA

possible_e = []
for i in range (2, phi):
    if gcd(n, i) == 1 and gcd(phi, i) == 1:
        possible_e.append() 
  • Decryption, private key d --> \( d * e mod \phi = 1 \)
possible_d = []
for i in range (phi + 1, phi + foo):
    if i * e mod phi == 1 :
       possible_d.append()
  • \( Cipher = msg ** d mod \phi \)
  • \( Cleartext = cipher ** e mod \phi )

Euklid

Just a short excourse:
A greatest common divisior out of an example a = 32 and b = 14 would be the groups of the following divisors

a = 32, b = 24
a = {1, 2, 4, 8, 16}
b = {1, 2, 3, 8, 12}
gcd(a,b) = 8

Greatest Common Divisor (GCD)

Two values are prime and have themselves and only 1 as a divisor are called coprime. To check if a and b have a greatest common divisor do the euclidean algorithm.

def gcd(a, b):
    if b == 0:
        return a
    return gcd(b, a % b)

Extended GCD

#TODO