В книгата "Стрелба за хакер" в първата глава, има задача, в която читателят се приканва да декодира кодираното прост XOR. В този случай, най-важното е неизвестен.
Тъй като текст на предлаганото манифест «съвестта на Hacker.txt«.
Първо трябва да се определи дължината на ключа.
- циклично измести текст аз (от 1 до дъл (текст) / 2) на правилните герои
- за всяка итерация, сравним броя на знаците, съвпада с оригинала (неизместено) и новия текст)
- изместване аз, при която броят на съвпадение е максималната е необходимата дължина на ключа
И между другото, защо дъл (текст) / 2. Правилно, разбира се, за да проверите всички изместването до LEN (текст) - 1. но експерименти са показали, че процентът на попадения за смяна аз и н-и ще бъдат същите на големи текстове. И кой ще направи дължината на ключа е повече от половината от текста?
На практика, това изглежда така:
- Имаме ciphertext «abcdea»
- циклично го смени с I = 1 герои
- Вземи «aabcde»
- Ние търсим за броя на знаците мачове в «abcdea» линии и «aabcde»
- В момента има един мач в символ нула.
- Процентът на попадения за срязване 1
Cool. Дължината на ключа е известно за нас.
Сега ние трябва да намерим самия ключ.
За да направите това, се процедира, както следва:
- Разделяне на текстови символи групи
- Броят на групите е равна на дължината на ключа
- Всяка група включва символи, които са кодирани от ключ и-тия символ
- Във всяка от групите вагонетка символи с най-често срещаният символ на азбуката (за английски това пространство)
- Ние считаме, че честотата на всяко получено характер между група
- Изберете по-тото писмо ключов елемент с най-голямата честота поява
Подкрепете проекта - споделете линка, благодаря!