Files
ctf/training/h4tum/Intro_to_RSA/demo/PEM/gen.py
2026-01-25 00:53:16 +01:00

37 lines
861 B
Python

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
from Crypto.Util.number import getPrime
e = 65537
p = getPrime(512)
q = getPrime(512)
n = p * q
phi = (p - 1) * (q - 1)
d = pow(e, -1, phi)
dp = d % (p - 1)
dq = d % (q - 1)
q_inv = pow(q, -1, p)
private_numbers = rsa.RSAPrivateNumbers(
p=p,
q=q,
d=d,
dmp1=dp,
dmq1=dq,
iqmp=q_inv,
public_numbers=rsa.RSAPublicNumbers(e=e, n=n)
)
key = private_numbers.private_key()
print(key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
).decode())
print(key.public_key().public_bytes(
serialization.Encoding.PEM,
serialization.PublicFormat.SubjectPublicKeyInfo
).decode())