2011-10-17 61 views
5

我需要一种算法(任何编程语言)来测试活力,用爬山算法来破解密码挑战的密码。该算法应该测试一个随机解密(没有空格)是一个英文文本的可能性(也给予尚未完成的单词的点数!)或只是一个随机的字符序列。蛮力语言检测

我试着用我开发的几种算法,但他们不太好。

我的研究:

一个谜M4加密项目(http://www.bytereef.org/m4_project.html)使用Sinkov统计,我想用也。

我发现的唯一的东西是一个«quebra -pedra»文档,它是一个Java框架,包括我正在寻找的Sinkov log-weight分析。

http://www.google.com/m?client=ms-android-samsung&source=android-home#q=Quebra-pedra+framework+java

但我还没有找到在哪里下载的框架。另外我还没有找到Sinkov测试的任何实现或描述。

我会很高兴任何提示。谢谢。

回答

5

我不知道Sinkov统计信息,但是来自自然语言处理的语言模型可以完全按照您的要求进行操作,通过与英语的相似程度对文本进行评分。

我在这里写了一个简单的字符bigram,它应该是相当容易遵循的。

https://github.com/rrenaud/Gibberish-Detector

+0

感谢您的评论。我不知道马尔可夫链,但我对计算bigrams得分有相同的想法。我用自己的公式得到的问题是,真实文本和垃圾之间的距离非常小。我会查看你的代码,以更多地了解马尔可夫链。 –

+0

我的同事将rrenaud的项目翻译成Java,万一这对任何人都有用https://github.com/paypal/Gibberish-Detector-Java – Eyal