forked from Qortal/Brooklyn
26 lines
671 B
Python
26 lines
671 B
Python
|
from Crypto import Random
|
||
|
from Crypto.PublicKey import RSA
|
||
|
from binascii import hexlify
|
||
|
|
||
|
def print_key_in_hex(k):
|
||
|
prv = k.exportKey(format='DER', pkcs=8)
|
||
|
n = prv[38:38+256]
|
||
|
e = prv[38+256+2:38+256+2+3]
|
||
|
p = prv[38+256+2+3+4+257+4:38+256+2+3+4+257+4+128]
|
||
|
q = prv[38+256+2+3+4+257+4+128+4:38+256+2+3+4+257+4+128+4+128]
|
||
|
n_str = hexlify(n)
|
||
|
e_str = hexlify(e)
|
||
|
p_str = hexlify(p)
|
||
|
q_str = hexlify(q)
|
||
|
if int(p_str, 16)*int(q_str, 16) != int(n_str, 16):
|
||
|
raise ValueError("wrong key", k)
|
||
|
print(n_str)
|
||
|
print(e_str)
|
||
|
print(p_str)
|
||
|
print(q_str)
|
||
|
|
||
|
rng = Random.new().read
|
||
|
key = RSA.generate(2048, rng)
|
||
|
|
||
|
print_key_in_hex(key)
|