У меня есть два файла, один — это шифрование оригинала с использованием частотного анализа, и я просто делаю новую строку с декодированной строкой (некоторые символы, вероятно, не будут корректно изменены, но это нормально, я изменю их вручную позже), но я полностью застрял о том, как это сделать после подсчета инцидентов в обоих файлах.
//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»
В стандартном английском тексте наиболее распространенным символом является пробел. Некоторые криптографические тексты содержат пробелы, другие — нет. Вам нужно будет попробовать оба. После пробела наиболее распространенными символами являются ETA OIN SHR DLU в этом порядке. Сопоставьте их с наиболее часто встречающимися буквами в зашифрованном тексте для грубого первого сокращения при расшифровке.
Для дальнейшего прогресса вам может понадобиться что-то вроде словаря кроссвордов, который может сопоставить шаблоны типа «S.I.OT» со словом: spigot, а затем расширить найденные «p» и «g» на другие слова. Если вы знаете контекст зашифрованного текста, то вы можете настроить свой словарь. Коммерческий текст будет содержать слова типа «маркетинг», в то время как военный текст будет содержать слова типа «батальон».
Других решений пока нет …