0

I have a cipher message in base64 and a pubkey.pem with the public key information. So because the key is small(576) I have recovered all the needed information to reconstruct the private key : p,q and d.

Now I want to decipher the message but I don't know how to do it. Indeed if I want to use the decrypt function I need an priv_key object but I don't know how to generate it from (n,e,d)

from Crypto.PublicKey import RSA
from base64 import b64decode

#message I want to decipher
msg="e8oQDihsmkvjT3sZe+EE8lwNvBEsFegYF6+OOFOiR6gMtMZxxba/bIgLUD8pV3yEf0gOOfHuB5bC3vQmo7bE4PcIKfpFGZBA"

pub_key64 = 'MGQwDQYJKoZIhvcNAQEBBQADUwAwUAJJAMLLsk/b+SO2Emjj8Ro4lt5FdLO6WHMMvWUpOIZOIiPu63BKF8/QjRa0aJGmFHR1mTnG5Jqv5/JZVUjHTB1/uNJM0VyyO0zQowIDAQAB'

pub_keyDER = b64decode(pub_key64)
pub_key_obj = RSA.importKey(pub_keyDER)   #my weak public key
...   # how to generate priv_key_obj ???
dsmg=priv_key_obj.decrypt(msg)
Artjom B.
  • 61,146
  • 24
  • 125
  • 222
Whysmerhill
  • 231
  • 1
  • 2
  • 7

1 Answers1

8

You can construct a private from components in the following way (documentation):

from Crypto.PublicKey import RSA

# assume d was correctly calculated
n = 1234....L
e = 65537L
d = 43434...L
private_key = RSA.construct((n, e, d))
dsmg = private_key.decrypt(msg)
Artjom B.
  • 61,146
  • 24
  • 125
  • 222