2015-10-26 5 views
0

У меня есть шифрованное сообщение в base64 и pubkey.pem с информацией открытого ключа. Так как ключ мал (576), я восстановил всю необходимую информацию для восстановления закрытого ключа: p, q и d.RSA генерировать секретный ключ из данных с помощью python

Теперь я хочу расшифровать сообщение, но я не знаю, как это сделать. Действительно, если я хочу использовать функцию дешифрования мне нужен priv_key объект, но я не знаю, как создать его из (п, е, г)

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) 

ответ

2

Вы можете построить частный из компонентов следующим образом (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) 
+0

Спасибо, RSA.construct говорят, что он хочет ровно два аргумента так: 'оценочных = [п, е, г] private_key = RSA.construct (оценочных)' – Whysmerhill

+0

Да, вы» re право. Это должен быть кортеж. –

Смежные вопросы