在哪里可以找到用于密码验证的词典?
我正在研究一种密码验证算法,该算法需要对照字典检查潜在的密码。如果在词典中可以找到密码或者密码的任何部分,请拒绝密码。该功能很容易,但是我从哪里获得单词列表?是否已经有一个用于查找单词的Web服务?我已经戳了一些,但没有发现任何尖叫" Pick Me!"的消息。谢谢。
编辑:当我问这个问题时,我没有想到过像@Joe Skora这样的特定密码词典,其中包括可以避免的单词。因此,我将问题扩展到包括该类型的字典,以及编写此功能时可能没有想到的其他任何内容。
平台是C#/ ASP.Net / SQL Server。这只是需要实施的强密码算法的一个组成部分。再次感谢。
解决方案
我认为旧程序是wwwhack ..它有一些可以用作基础的蛮力字典(我认为它们包含为纯文本文件),除此之外,我不知道任何地方都有通用的PW字典向公众开放。
有几个开放的通用许可证(不特定于密码)字词列表/数据库。我最喜欢的是普林斯顿WordNet
通常
- / usr / dict / words
或者
- / usr / share / dict / words
取决于我们使用的是哪个UNIX。
在线上有更多可用内容,例如此免费的多语言词典
这里有一些字典/单词表。
要验证强密码,我们应该做的不仅仅是检查词典中的单词。但是,如果平台上还没有一个库可以做到这一点(顺便问一下,这是什么?),只需像对待拼写检查一样对待它即可。如果密码的任何部分通过了拼写检查器,它将失败。
Microsoft具有用于拼写检查的库。
如果我们特别想使用Web服务,请考虑这一点。
根据http://www.dictionary.com检查预期密码中的所有子字符串
搜寻免费词典可为我们提供许多免费可用的词典。如果将它们上传到数据库,则可以快速查找已知单词。
但是不要以为它会消除非蛮力攻击!
我们应该看看密码破解应用程序!词典攻击的最简单扩展是组合单词。此外,还有其他类型的攻击,例如替换字符,它们在键盘上彼此靠近。 (例如:将d转到f。)
到目前为止,我见过的最好的密码破解应用程序是开膛手约翰。如果我们看到它使用了哪种攻击,则可以构建更好的密码生成器。
我们还应该研究用户习惯,因为典型的密码是错误的密码。例如,大多数用户将数字放在密码短语的末尾,因此密码很强,中间是一个数字。
我认为没有必要检查字典,尤其是如果我们想拒绝密码的一部分时。英语有很多小词,扩展到多语言词典可能会阻止使用任何合理大小的密码,而不会让其他字母都互为" z"," q"或者" y":" a"," on"," in"," je''um''o'等
我不完全理解为什么我们可以轻松地强加其他简单规则时会关心字典中的密码:
最小长度为8个字符的密码必须包含:
- 2至8个大写字符
- 2至8个小写字符
- 2至8个数字
- 1至4个特殊字符(*** +"%&/()?-[] {} \ <>等)
我从这里得到单词列表,并将其加载到数据库中。删除了所有少于3个字符的单词。
编写了一个C函数,将密码的每个子字符串(仅现在转发)解析为一个xml字符串。
将xml字符串传递给存储的proc,该proc创建一个1列的临时表,每个子字符串组成一行。
将临时表加入我的单词列表,如果返回任何行,我知道密码包含一个词典单词,并且知道匹配的子字符串。
这很好用,但是我认为我们最终会稍微修改单词列表,因为它可能过于严格。
谢谢你对单词表的帮助
我最初尝试使用拼写检查器路线,但没有找到没有第三方组件(重新分配价格太高,我们正在销售产品)或者服务器上要求MS Word的拼写检查方法。