还有其他名称的Fourier密码这样的东西吗?

时间:2011-01-18 20:15:24

标签: php encryption

我创建了一种基于傅里叶变换概念的字母密码,其中每个字符的定义基于它与前一个字符的距离(字母表中):

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);

}

这种类型的密码的一个好处是,与Caesar密码不同,它不能使用正常的字母频率分析来破解,因为代表每个实际字母的密码字母在整个过程中并不是一成不变的。

例如:

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

我对密码知之甚少,所以我假设之前已经完成了这类事情。

我很好奇:与其他技术相比,这种类型的密码是否具有名称 - 解密有多容易?

2 个答案:

答案 0 :(得分:1)

它被称为'Delta'密码或Delta编码。见http://poj.org/problem?id=1453

手动操作有点乏味。 :)似乎没有在线解码器/编码器,尽管有几年前。

绝对不是Vigenere,它比Vigenere更容易破解(如果vigenere关键字未知)。

答案 1 :(得分:0)

看起来更像Vigenere。至少对我而言。我试着通过Friedman Kappa测试来解决这个问题:找出与他们在目标语言中出现频率相关的字母间隙频率。我仍然不知道这与傅立叶有什么关系?

编辑:查看评论