我想找到(不生成)2个文本字符串,这样在删除所有非字母和ucasing之后,可以通过简单替换将一个字符串翻译成另一个字符串。
这样做的动机来自我所知道的一个项目,即通过概率分布测试攻击密码的方法。我想找到一个大的,连贯的纯文本,一旦用简单的替换密码加密,就可以被解密为其他同样连贯的东西。
这最终分为2部分,找到语料库中最长的字符串,然后获得该语料库。
第一部分对我来说似乎和某种类型的攻击是平和的,其中一个B树在一次替换之后键入了字符串,这使得第一次出现的序列成为顺序。
HELLOWORLDTHISISIT
1233454637819a9b98
根据树的每个深度知道字符串的最大值和长度进行一点优化,其余的只是编码。
其他部分将涉及更多;如何生成大型文本语料库进行搜索?某种互联网蜘蛛似乎是理想的方法,因为它可以访问最大量的文本,但如何将其剥离为文本?
问题是;关于如何做得更好的任何想法?
编辑:正在使用的密码是一个疯狂的基本26字母替换密码。
P.S。这对我来说更像是一个思想实验,然后是一个可能的真实项目。
答案 0 :(得分:1)
有26个!不同的替代密码。这有点超过88位的选择:
>>> math.log(factorial(26), 2)
88.381953327016262
英文文本的熵至少是每个字符2位。因此,在我看来,你无法合理地期望找到超过45-50个字符的段落,这些字段在替换时会意外地等效。
对于大型语料库,首先是古腾堡项目和维基百科。您可以从他们的网站下载所有英语维基百科的XML文件的转储。
答案 1 :(得分:0)
我认为你要求一点点产生一个“连贯”的替代品。这是加密算法的AI问题,以确定哪些文本是连贯的。此外,文本越长,创建“连贯”结果就越复杂......只要您正在加密文本,快速接近需要“密钥”的点。因此,完全没有加密它的目的。