Определение ключа шифра Виженера, если известна длина ключа

Я изо всех сил пытаюсь понять шифр Виженера, когда вы знаете длину ключа, но не знаете, что это такое. Я могу расшифровать текст, если знаю ключ, но не понимаю, как понять, что это за ключ на самом деле.

Например, мне дали зашифрованный текст и длину ключа 6. Это все, что мне дали, мне сказали, что ключ представляет собой произвольный набор букв, которые не обязательно должны составлять слово на английском языке. , другими словами, случайный набор букв.

Зная это, я пока только разбил зашифрованный текст на 6 подтекстов, каждый из которых содержит буквы, зашифрованные ключевыми буквами, поэтому первый подтекст содержит каждую шестую букву, начиная с первой. Вторая каждая 6-я буква, начинающаяся со второй буквы и так далее.

Что мне теперь делать?


person Ben Crazed Up Euden    schedule 20.10.2013    source источник
comment
Это похоже на домашнее задание. Вы, вероятно, не получите подробностей, кроме основных советов.   -  person B-Con    schedule 21.10.2013
comment
По большей части это так. Я ищу хорошее объяснение следующих шагов, а не решение, а просто то, как я могу найти решение.   -  person Ben Crazed Up Euden    schedule 21.10.2013


Ответы (2)


Вы рассчитываете таблицу частоты букв для каждой буквы ключа. Если, как в вашем примере, длина ключа равна 6, вы получите 6 частотных таблиц. Вы должны получить похожие частоты, хотя и не для тех же букв. Если вы этого не сделаете, у вас неправильная длина ключа.

Теперь вы проверяете таблицы частоты букв для английского языка (например, см. http://en.wikipedia.org/wiki/Letter_frequency). Если шаблон не совпадает, то открытый текст был не на английском языке. Если это так, назначьте наиболее часто встречающиеся буквы в каждом подтексте наиболее часто встречающимся буквам в частотной таблице и т. д. и посмотрите, что получится. Обратите внимание, что ваш текст может иметь несколько иную частотность, справочные таблицы представляют собой статистику, основанную на большом количестве данных. Теперь вам нужно использовать голову.

Использование общих биграмм (таких как th и sh в английском языке) может помочь.

person Jonathan Rosenne    schedule 20.10.2013

Одним из подходов является частотный анализ. Возьмите каждую из шести групп и постройте таблицу частот для каждого символа. Затем сравните эту таблицу с таблицей известных частот для открытого текста (если это стандартный текст, это будет просто английский язык).

Второй, возможно, более простой подход заключается в простом переборе каждого символа. Количество возможных ключей составляет 26 ^ 6 ~= 300 000 000, что составляет около 29 бит пространства ключа. Это грубая сила, но, вероятно, займет немного времени на персональном компьютере. Но если вы переборщите по одному символу за раз, это займет всего 26 * 6 = 156 попыток. Для этого напишите функцию, которая «оценивает» попытку дешифрования открытого текста тем, насколько он «похож на открытый текст». Вы можете провести частотный анализ, как описано выше, но могут быть и более простые тесты. Затем переберите каждый из шести наборов символов и выберите букву ключа, которая лучше всего подходит для расшифровки каждого из них.

person B-Con    schedule 20.10.2013