Доброе время суток необходима помощь в расшифровки текста или указание в ошибке выполнения задания, прохожу челендж на сайте root-me.org, где дан открытый ключ и зашифрованный текст:
-----BEGIN PUBLIC KEY-----
MGQwDQYJKoZIhvcNAQEBBQADUwAwUAJJAMLLsk/b+SO2Emjj8Ro4lt5FdLO6WHMM
vWUpOIZOIiPu63BKF8/QjRa0aJGmFHR1mTnG5Jqv5/JZVUjHTB1/uNJM0VyyO0zQ
owIDAQAB
-----END PUBLIC KEY-----
e8oQDihsmkvjT3sZe+EE8lwNvBEsFegYF6+OOFOiR6gMtMZxxba/bIgLUD8pV3yEf0gOOfHuB5bC3vQmo7bE4PcIKfpFGZBA
Используя Python и библиотеку pycrypto я вытащил из ключа модуль n:
from Crypto.PublicKey import RSA
key = RSA.importKey(open('pubkey.pem').read())
print('n = ',key.n)
print('e = ',key.e)
где n = 188198812920607963838697239461650439807163563379417382700763356422988859715234665485319060606504743045317388011303396716199692321205734031879550656996221305168759307650257059
e = 65537
Далее погуглив про факторизацию я наткнулся на RSA Factoring Challenge, где и нашёл искомый модуль, который соответствовал RSA-576 и там же находилась факторизация числа. Имея все эти данные воспользовался википедией и python реализовал вычисление секретного ключа.
def egcd(a, b):
x,y,u,v = 0,1,1,0
while a != 0:
q, r = b // a, b % a
m, n = x - u * q, y - v * q
b,a,x,y,u,v = a,r,u,v,m,n
return b, x, y
def modinv(e, m):
g, x, y = egcd(e, m)
if g != 1:
return None
else:
return x % m
def pqe2rsa(p, q, e):
n = p * q
phi = (p - 1) * (q - 1)
d = modinv(e, phi)
key_params = (int(n), int(e), int(d), int(p), int(q))
priv_key = RSA.construct(key_params)
with open('privkey.pem', 'wb') as f:
f.write(priv_key.exportKey())
что на выходе мне дало вот это:
-----BEGIN RSA PRIVATE KEY-----
MIIBXwIBAAJJAMLLsk/b+SO2Emjj8Ro4lt5FdLO6WHMMvWUpOIZOIiPu63BKF8/Q
jRa0aJGmFHR1mTnG5Jqv5/JZVUjHTB1/uNJM0VyyO0zQowIDAQABAkgyAw5Cxp1O
d95+I5exPbouUvLFeiBfWXP+1vh2MvU8+IhmCf9j+hFOK13x22JJ+Orwv1+iatW4
5It/qwUNMvxXS0RuItCLp7ECJQDM6VRX8SfElUbleEECmsavcGBMZOgoEBisu1OC
M7tX83puaJUCJQDzXLgl8AM5bxHxSaWaD+c9tDFiyzBbjr/tpcqEC+JMU2tqrlcC
JQCjGt8+GQD0o3YJVc05i4W3RBYC+RcqPJXHeFyieRcYjP/ZPnkCJQDVUULBTl8l
KuzJWcrk/metuJNJi925g6lMwHSBxoD4cm7HtkUCJFqWTOzCIODw7eoypcJYjm2O
/ohEsSjEXsg6Bh8mY3LunBaqiA==
-----END RSA PRIVATE KEY-----
и далее, чтобы расшифровать исходный текст я решил воспользоваться Openssl в Ubuntu
openssl rsautl -decrypt -in ciphertext -out text -inkey privkey.pem
На что мне программа говорит "Ошибка чтения входящего файла"
Либо может уже к вечеру голова не варит и я действительно какую-то примитивную вещь сделал не так нежели другого не знаю, помогите дельным советом!