我正在解密一份旧文本,我想要一个快速算法来检查一个长字符串中是否有来自字典的有意义的单词。这样我就可以判断特定键是否有效。
因此,可以使用字典预处理和大表,但在处理 25-50 个字符时要尽可能快。
谢谢!
更新
我知道这门语言(意大利语),但文字没有空格,可能还有几个随机字母。喜欢:
TANKSSEENNEARUDINEYESTERDAY
而且密码是一种奇怪的柱状转置,所以单个字母的频率是固定的。
最佳答案
密码学中的标准方法不是检查字典,而是检查明文(假设)语言的概率模型。例如,trigraphs 的简单统计数据(即三个字符相邻的序列)明显不同,例如在英语和胡言乱语之间。 (在英语中,“THE”是最常出现的三字母。同样,像“CXC”这样的三字母根本不会出现在英语中。)
例如,Vigenere 密码可以通过使用简单的自相关方案推断 key 长度,然后根据底层明文语言的语言统计搜索实际 key 来破解。当我在我们大学讲授密码学时,我什至实现了用于演示目的的程序......:)
使用这些类型的概率/马尔可夫模型的好处是,它们还可以很好地容忍恰好在特定词典之外的单词,或者有拼写错误,或者是替代或过时的形式。
关于algorithm - 判断文本是否有意义的字符串搜索算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10789732/