Есть ли такая вещь, как шифр Фурье, под другим именем? - PullRequest
2 голосов
/ 18 января 2011

Я создал тип шифра алфавита, который основан на концепции преобразования Фурье, где каждый символ определяется на основе того, насколько он (в алфавите) от предыдущего символа:

function fourier_cipher($text) {

   $letters = array(1=>'a', 2=>'b', 3=>'c', 4=>'d', 5=>'e', 6=>'f', 7=>'g', 8=>'h', 9=>'i', 10=>'j', 11=>'k', 12=>'l', 13=>'m', 14=>'n', 15=>'o', 16=>'p', 17=>'q', 18=>'r', 19=>'s', 20=>'t', 21=>'u', 22=>'v', 23=>'w', 24=>'x', 25=>'y', 26=>'z');

   $chars = str_split($text);

   $prev_number = 0;
   $prev_difference = 0;

   for ($i=0; $i<count($chars); $i++) {
      $letter = $chars[$i];
      $number = array_search($letter,$letters);
      if ($number) {
         $difference = ($prev_difference > 13) ? 26 - abs($number - $prev_number) : abs($number - $prev_number);
         $code[$i] = $letters[$difference];
         $prev_number = $number;
         $prev_difference = $difference;
      }
      else {
         $code[$i] = $letter;
      }

   }

   return implode($code);

}

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

Например:

$text = 'we hold these truths to be self evident';
echo fourier_cipher($text);
// outputs: wh cgch pnwln kbcalk ae mc nlgf aqmeaif

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

Мне любопытно: у этого типа шифра есть имя - и насколько легко его расшифровать по сравнению с другими методами?

Ответы [ 2 ]

1 голос
/ 10 июля 2011

Это называется «Дельта» шифр, или Дельта кодирование.См. http://poj.org/problem?id=1453

Это немного утомительно делать вручную.:) Похоже, что нет онлайн-декодера / кодировщика, хотя это было много лет назад.

Определенно не Vigenere, и его легче взломать, чем Vigenere (если ключевое слово vigenere неизвестно).

0 голосов
/ 18 января 2011

Больше похоже на Вигенера. По крайней мере, для меня. Я бы попытался сломать это с помощью теста Фридмана Каппа: выяснить частоту межбуквенных интервалов, связанную с тем, как часто они встречаются на языке перевода. И все же я не понимаю, как это связано с Фурье?

изменить: см. Комментарий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...