37 lines
861 B
Python
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()) |