我正在尝试实现此算法;你可以在这里找到一个很好的描述
LINK - Chapter 11.6 - Playfair Cipher
我对解密阶段有了一些想法。
在我按照加密文本的说明后,我得到:
35VRX2NZDCR25885
然后解密我按照相反方向的说明,但我被困在我得到消息解密的点
LETUSMEETATNOON
我怎么能从“LETUSMEETATNOON”转到“让我们在NOON见面”?
我应该以不同的方式对待空间吗?
答案 0 :(得分:1)
空间不允许作为密码系统的明文或密文,因为它在附件中定义。
您可以使用更大的定义矩阵并添加所需的所有有用符号,可能是. , ; - ? ! : ' \ /
,也可能是换行符。
还有一种方法。这是一个普遍的问题:如何在文本中添加空格以获得人类可读(英语)的句子?如何识别有效的英语句子?这是一个非常难以解决的数学语言学问题,尚未解决。
在您的情况下,您可以省略语法分析并仅检查单词的有效性。您可以轻松检查所有可能的拆分,并检查所有生成的单词是否都是有效的英语单词。您所需要的只是一本优秀的英语词典(所有英语单词列表),例如可以在Linux上的文件夹/usr/share/dict/
或/var/lib/dict/
找到,其他许多可以从互联网上下载。
关于Playfair算法:
如果您需要任何真正的安全性,请不要使用它 - 使用频率分析可以很容易地将其破坏。