1

我想找到(不生成)2 个文本字符串,这样,在删除所有非字母和 ucasing 之后,一个字符串可以通过简单的替换转换为另一个。

这样做的动机来自我知道的一个项目,该项目是测试通过概率分布攻击密码的方法。我想找到一个大而连贯的纯文本,一旦用简单的替换密码加密,就可以解密为其他同样连贯的内容。

这最终分为两部分,在语料库中找到最长的此类字符串,并获得该语料库。


在我看来,第一部分似乎对某种攻击很友好,在替换后将 B-tree 键控掉字符串,这使得第一次出现的序列是连续的。

HELLOWORLDTHISISIT
1233454637819a9b98

基于知道基于树的每个深度的字符串的最大值和长度的一点优化,其余的只是编码。


另一部分会涉及更多;如何生成大量文本进行搜索?某种互联网蜘蛛似乎是理想的方法,因为它可以访问最多的文本,但如何将其剥离为文本?

问题是; 关于如何更好地做到这一点的任何想法?


编辑:正在使用的密码是一个非常基本的 26 个字母替换密码。

ps 这对我来说更像是一个思想实验,而不是一个可能的真实项目。

4

2 回答 2

1

有26个!不同的替换密码。可以选择超过 88 位:

>>> math.log(factorial(26), 2)
88.381953327016262

英文文本的熵至少是每个字符 2 位。因此,在我看来,您无法合理地期望找到超过 45-50 个字符的段落在替换下意外等效。

对于大型语料库,首先是 Gutenberg Project 和 Wikipedia。您可以从他们的网站下载所有英文维基百科的 XML 文件的转储。

于 2008-12-08T01:16:15.557 回答
0

我认为您要生成一个“连贯”的替换要求有点高。这是加密算法的一个 AI 问题,用于确定哪些文本是连贯的。此外,您的文本越长,创建“连贯”结果就越复杂......只要您正在加密的文本,就会快速接近您需要“密钥”的点。从而完全违背了加密它的目的。

于 2008-12-07T21:52:20.837 回答