Возможно, кому-то будет интересно, или кто-то просто знает, но тем не менее: Условие задачи: вычислить какие 2 текста зашифрованы Известно: 1) шифрование использует коды ASCII со 128 возможными «буквами» в любой позиции; 2) ключ одинаков для обоих документов; 3) ключ был сгенирирован псевдослучайным образом со значениями в пределах от 0-127; 4) если длины исходных текстов несовпадают, то более короткий дополняют пробелами; 5) оба текста - куски достаточно известных текстов на английском языке. шифр1: 42 102 120 61 61 67 57 84 117 66 41 33 100 116 15 55 80 16 120 0 54 78 105 113 96 25 43 69 39 82 125 40 40 24 120 94 92 37 114 53 64 63 107 19 82 62 99 81 81 69 103 22 120 123 71 1 113 57 5 50 67 40 2 85 67 11 40 56 22 89 127 95 59 121 27 121 95 121 114 3 1 5 45 103 112 127 62 34 39 13 44 30 80 19 2 60 72 80 56 18 93 31 69 66 45 122 71 33 58 113 12 120 50 63 39 5 110 28 14 48 109 10 68 95 92 88 0 30 107 4 54 92 104 122 5 95 15 118 42 93 75 83 9 35 106 8 13 53 101 93 32 60 53 36 72 101 121 121 121 99 98 89 30 71 87 87 14 107 28 36 42 108 98 95 99 68 2 60 шифр2: 34 40 111 117 37 64 32 88 55 74 112 117 103 121 23 54 91 5 116 84 42 79 127 35 114 80 48 67 39 71 53 62 97 12 113 48 47 34 122 57 80 63 122 77 61 93 119 68 71 83 107 87 116 115 2 19 101 112 86 127 78 109 2 89 81 17 85 5 21 94 127 84 59 109 13 42 25 116 126 7 7 18 106 118 113 62 37 63 43 102 69 73 79 14 7 105 70 17 18 25 93 56 7 27 7 84 8 117 50 123 9 44 42 50 98 76 111 6 4 48 117 7 86 88 92 75 29 16 121 65 52 80 107 50 19 8 41 46 10 84 74 95 93 57 106 27 72 125 101 73 97 56 58 51 89 101 108 125 112 99 114 72 18 9 84 30 7 107 89 34 39 103 33 86 36 3 74 104
k0k0s Если ключ имеет размер равный размеру зашифрованного сообщения, то расшифровать невозможно! Отсюда вопрос: Какова длина ключа?
Если длина ключа равна длине текста , то такой текст НЕ ВОЗМОЖНО РАЗШИФРОВАТЬ. например исходный текст = "тест" ключ = пофиг какой но длина = 4 байта выходной текст = "зузу" ты никак не сможешь доказать что исходный текст был "тест". Ведь я могу сказать что исходный текст был "ёжик", и все. Так как я могу зделать такой ключ чтоб при ксоре ответ ставал "ёжик".
EvilsInterrupt MegaZu Обратите внимание на Понятно ведь, что это необходимое для расшифрования условие. One-time pads, которые вы похоже оба имеете в виду, являются криптостойкими , только если применяются всего один раз (как и следует из названия ).
Я вчера когда вчером увидел этот пост... тоже сразу подумал раз ключ такой же длины то нереально.... да и былобы удобнее если бы два текста даны были бы атачами в бинарном виде скажем а то ну не удобно Ж) А так можно попробывать часть текста расшифровать переберая комбинации ключей.... хотя бы первые 4 байта тежи.. и смотреть чтоб при расшифровки как я понимаю он должен расшифровать два текста.... были бы только те символы которые можно напичатать... правдо думаю все ровно закалебешься =)
Stiver ты прав, эта задача решаема, на 100%. Другой вопрос - во что это решение встанет? Наиболее близок к моему ходу мыслей был Fallout Изначально, чисто теоретически, мы имеем 177 в степени 128 комбинаций ключа. Потом ксорим 2 текста - получаем ксор незашифрованных текстов => количество комбинаций сокращается в два раза. Вот... А с этого места самое интересное! Либо подключать словарик выдергивающий английские слова - ну это не очень эротично. Второй вариант - что то наподобии интерактивности, чтобы сразу исключать муть типа dsfjkb - это в лучшем случае Вообщем у меня еще время до 18-го. Завтра еще с преподом поболтаю.
k0k0s Так ты сам решения не знаешь? Если это ASCII и текст осмысленный то часть сообщения можно восстановить следующим образом: берём первые 2 символа предполагаем, что это 2 буквы. Ксорим их и получаем (X xor Key) xor (Y xor Key)=X xor Y . Ксорим все возможные комбинации букв друг с другом в поисках совпадений. Затем из всех совпадений выбираем наиболее вероятную пару (по таблице частот для английского). И так по всем символам. Может быть появятся осмысленные куски.
2asd а у нас же грубо говоря для каждый буквы свой ключ... Ж) Я вот счас попробывал взял первые так скзаать 4 байта из обоих тексов.... в цикле от 0 до 0xFFFFFFFF ключ... и ксорил им эти 4 байта после ксора проверял чтоб два этих 4-х байтных куска были буквами... честно сказать такого ВООБЩЕ не было Ж) взял из произвольных двух мест по 4 байта.... тоже самое толи на пробелы нарываюсь всегда толи ещё чего Ж)
EvilsInterrupt вот что: Код (Text): 74 78 23 72 24 3 25 12 66 8 89 84 3 13 24 1 11 21 12 84 28 1 22 82 18 73 27 6 0 21 72 22 73 20 9 110 115 7 8 12 16 0 17 94 111 99 20 21 22 22 12 65 12 8 69 18 20 73 83 77 13 69 0 12 18 26 125 61 3 7 0 11 0 20 22 83 70 13 12 4 6 23 71 17 1 65 27 29 12 107 105 87 31 29 5 85 14 65 42 11 0 39 66 89 42 46 79 84 8 10 5 84 24 13 69 73 1 26 10 0 24 13 18 7 0 19 29 14 18 69 2 12 3 72 22 87 38 88 32 9 1 12 84 26 0 19 69 72 0 20 65 4 15 23 17 0 21 4 9 0 16 17 12 78 3 73 9 0 69 6 13 11 67 9 71 71 72 84
Ну вот если заксорить скажем две букву... какие нибудь даже в заксореном виде то поулчаеться значение такое же как еслиб мы закорили и реальные... буковки =)
Fallout Ты немного не понял, по-моему. Берём первые 2 символа: 42 и 34. Ксорим их друг с другом - получаем число Z. Этот Z=X xor Y, где Х и Y - символы исходных текстов. Теперь берём букву "a" и ксорим её с буквой "b", проверяем равны ли они Z , и так для всех букв. Находим все совпадения и выбираем из них. Проверять надо побайтно. Пример 42=2a 34=22 2a xor 22 = 8 ищем все возможные пары символов проксорив которые мы получим 8 и вабираем из них. К примеру это врядли символы 8 и 0
А ну да понятненько... извени дейсвительно не так понял... я счас тоже как раз так решил... сделать... Ж) ну и задания конечно дают... Ж)