Starter
1. Modular Exponentiation
print(pow(12,65537,22663))
2. Public Keys
e=65537
p=17
q=23
N = p*q
def encrypt(m):
return pow(m, e, N)
m=12
print(encrypt(m))
3. Euler's Totient
p = 857504083339712752489993810777
q = 1029224947942998075080348647219
print((1-p)*(1-q))
4. Private Keys
p = 857504083339712752489993810777
q = 1029224947942998075080348647219
e = 65537
phi = (p-1)*(q-1)
print(pow(e, -1, phi))
5. RSA Decryption
p = 857504083339712752489993810777
q = 1029224947942998075080348647219
e = 65537
phi = (p-1)*(q-1)
d = pow(e, -1, phi)
c = 77578995801157823671636298847186723593814843845525223303932
m = pow(c, d, p*q)
print(m)
6. RSA Signatures
import hashlib
from Crypto.Util.number import *
flag = "crypto{Immut4ble_m3ssag1ng}"
with open("private.key", "r") as f:
N = int(f.readline().split()[-1])
d = int(f.readline().split()[-1])
hash = hashlib.sha256(flag.encode()).digest()
print(pow(bytes_to_long(hash), d, N))