如何检查字符串是无意义的还是一组英文单词

Posted

技术标签:

【中文标题】如何检查字符串是无意义的还是一组英文单词【英文标题】:How to check if string is nonsense or set of english words 【发布时间】:2019-11-15 17:19:25 【问题描述】:

我正试图通过暴力破解学校作业中的Vigenère cipher,我想为此编写自己的脚本,因为我没有关于 KEY 的信息。

有什么工具可以检查输入字符串中包含多少真实的英文单词?

示例:

这个字符串是废话:'GHDSGBHJWVHUSAFRSFUYWFBDYFTSA'

这个字符串似乎是正确的 OPEN TEXT: 'THENAMETOOOFTENSTOREMANAGER'

任何现有的 javascript、Java 或 Python 包?或者一些公共 API 可以告诉我如果找到任何单词的话有多少?

【问题讨论】:

您链接到的***页面有一个关于密码分析的部分。首先,您需要确定密钥长度。然后你可以使用频率分析来找出实际的关键是什么。您在这方面有什么特别的问题吗? 那不是我的问题 【参考方案1】:

不确定这是否对您的用户案例有帮助(没有空格的句子),但请看一下这个包https://www.npmjs.com/package/asdfjkl

【讨论】:

【参考方案2】:

您可以简单地将英语单词的纯文本字典输入到正则表达式比较中,并将每个已知单词与字符串进行比较。然后你可以在这之后做你的逻辑来确定你是否认为它是一个真正的英文字符串。

【讨论】:

是的...我这样做了,但效率不高:D 不确定你到底是怎么做的,但我相信有一些方法可以让它更快,例如线程。【参考方案3】:

您可能需要的是鼻孔。 Nosril 是 Nonsense String Evaluator:一个 Python 模块,用于推断给定的短字符串是否可能是随机乱码。

https://github.com/casics/nostril

from nostril import nonsense

if nonsense('yoursinglestringhere'):
   print("nonsense")
else:
   print("real")

【讨论】:

以上是关于如何检查字符串是无意义的还是一组英文单词的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java Regex,如何检查字符串是不是包含集合中的任何单词?

如何区分一个单词是半角还是全角?

如何使用 Perl 从一组字母中生成单词列表?

前段页面代码规范

给定一个单词,通过在它们之间添加空格来形成一个有意义的单词

创建无意义的词 - 在 R 中使用具有三个以上维度的 outer()