Использование частотного анализа для декодирования текстового файла, зашифрованного с одной подстановкой символов

1

У меня есть два файла: один - это шифрование оригинала, используя частотный анализ, и просто создайте новую строку с расшифрованной строкой (некоторые символы, вероятно, не будут изменены корректно, но все в порядке, плохо измените их вручную позже), но im completelly застрял о том, как это сделать после подсчета числа инцидентов в обоих файлах.

//gets string from both text files and converts in a array
        $reference = file_get_contents('reference_file.txt', true);
        $encrypted = file_get_contents('encrypted_file.txt', true);
        $refarray = str_split($reference, '1');
        $encarray = str_split($encrypted, '1');

//counts ocurrences in both strings and saves them as an array : "Character" ==> "Number of Ocurrences"
        $refarray1 = array_count_values(str_split(file_get_contents('reference_file.txt', true)));
        $refarray2 = array_count_values(str_split(file_get_contents('encrypted_file.txt', true)));

Теперь я не знаю, куда идти отсюда, полностью застрял

ИЗМЕНИТЬ 1:

 foreach ($refarray1 as $key => $val) {
            print "$key = $val <br \>";
            $aux69 = $key;
            foreach ($refarray2 as $key2 => $val2) {
                if ($val == $val2) {
                   $encrypted = str_replace($key2, $key, $encrypted);
                }
            }
        }

Я придумал это, но он все еще не работает, он меняет много букв в зашифрованной строке, но его нечитаемый, он изменил большинство символов только на "j" d 'e, пример конечной строки:

"jjdebdda bw d jdbejewedwbje zjee edzjdbbddda"

Теги:
arrays
encryption

1 ответ

0

В стандартном английском тексте наиболее распространенным символом является пространство. Некоторые криптографические открытые тексты включают пробелы, другие - нет. Вам нужно будет попробовать оба. После пробела наиболее распространенными символами являются ETA OIN SHR DLU в этом порядке. Совместите их с наиболее частыми буквами в cyphertext для грубого первого разреза при расшифровке.

Для достижения прогресса вам может понадобиться нечто вроде словаря кроссвордов, который может сопоставлять шаблоны типа SIOT со словом: spigot, а затем расширять найденные "p" и "g" на другие слова. Если вы знаете контекст cyphertext, вы можете настроить свой словарь. Коммерческий текст будет содержать такие слова, как "маркетинг", в то время как военный текст будет содержать такие слова, как "батальон".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню