@korsamc

RSA 576 bit, как дешифровать?

Доброе время суток необходима помощь в расшифровки текста или указание в ошибке выполнения задания, прохожу челендж на сайте 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

На что мне программа говорит "Ошибка чтения входящего файла"
Либо может уже к вечеру голова не варит и я действительно какую-то примитивную вещь сделал не так нежели другого не знаю, помогите дельным советом!
  • Вопрос задан
  • 793 просмотра
Решения вопроса 1
@korsamc Автор вопроса
Нашёл ответ следующим образом, может не правильно скопировал с википедии факторизацию, перенёс её в код заново перекомпилировал всё и при помощи https://8gwifi.org/rsafunctions.jsp данного сервиса расшифровал. Ответ оказался: up2l6DnaIhZgxA
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Мне говорит
RSA operation error
140624383731344:error:0406506C:rsa routines:RSA_EAY_PRIVATE_DECRYPT:data greater than mod len:rsa_eay.c:518:
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы