Восстановление зашифрованного слова с помощью dictonary в python - PullRequest
0 голосов
/ 30 ноября 2011

Я пытаюсь восстановить зашифрованное RSA слово из 5 символов, используя атаку с использованием словаря прямого поиска в Python, но у меня возникают трудности. Слово было зашифровано в 2 24-битных блоках (3648141 5604637) с заполнением последнего блока пробелом

e = 5
n = 21508387

table = {}
for ptext in range(65,90):
    ctext = pow(ptext,e,n)
    table[ctext] = ptext
    print table

Я знаю, что мне нужно сделать выше, чтобы он расшифровывал все комбинации длиной 3 символа AAA AAB ... ZZA ZZB и т. Д., Но то, что у меня есть, расшифровывает только отдельные символы AB C .. XYZ, так как мне заставить его расшифровать 3 символа одновременно?

Распечатка, которую я получаю, состоит из множества строк с такими вещами, как {8521919L: 65} {7688462L: 66, 8521919L: 65} но я не вижу свои блоки в результатах, и я предполагаю, что число с двоеточием является ASCII?

Могу ли я получить помощь в этом, любой совет? Спасибо

1 Ответ

1 голос
/ 01 декабря 2011

Создайте все трехбуквенные комбинации, закодируйте их как целое число, примените функцию pow, сообщите, когда они совпадают с вашим зашифрованным сообщением.

Наиболее очевидный способ перебора всех трехбуквенных комбинаций - три вложенных циклавместо того, который у тебя есть сейчас.

...