我正在开发一种密码验证算法,需要根据字典检查潜在的密码。如果可以在字典中找到密码或其任何部分,请拒绝它。功能很简单,但我在哪里获得单词列表?是否有用于查找单词的Web服务?我捅了一些,但没有找到任何尖叫“挑选我!”的东西。感谢。
编辑:当我问这个问题时,我没想过像@Joe Skora这样的特定密码词典会包含可以避免的词汇。因此,我将扩展问题以包括该类型的字典,以及我可能没有考虑编写此函数的任何其他内容。平台是C#/ ASP.Net / SQL Server。这只是需要实现的强密码算法的一个组成部分。再次感谢。
答案 0 :(得分:6)
Googling为您提供了许多免费提供的词典。如果将它们上传到数据库,则可以快速查找已知单词。
然而不认为它会消除非暴力攻击!
您应该查看密码破解应用程序!字典攻击最简单的扩展是组合单词。此外,还有其他类型的攻击,如替换字符,在键盘上彼此靠近。 (例如:将d转到f。)
到目前为止,我见过的最好的密码破解应用程序是John the Ripper。如果你看到它使用了什么样的攻击,你可以构建一个更好的密码生成器。
您还应该学习用户习惯,因为典型的密码是错误的密码。例如,大多数用户将密码放在密码短语的末尾,因此密码很强,其中间有一个数字。
答案 1 :(得分:2)
通常
或
取决于您拥有的unix。
网上有更多可用内容,例如free multilingual dictionary
答案 2 :(得分:2)
我从here获得了单词列表,并将其加载到我的数据库中。删除了少于3个字符的所有单词。
写了一个C#函数来解析密码的每个子字符串(现在只转发)到xml字符串中。
将xml字符串传递给存储过程,该过程创建一个1列临时表,每个子字符串构成一行。
将临时表加入我的单词列表,如果返回任何行,我知道密码包含字典单词,我知道子字符串匹配的是什么。
这很有效,但我认为我们最终会修改单词列表,因为它可能过于严格。
感谢word列表中的帮助
我最初尝试使用拼写检查路线,但我没有找到方法进行拼写检查而没有第三方组件(重新分配太昂贵而且我们正在销售产品),或者需要MS Word on服务器。
答案 3 :(得分:1)
有几个开放许可证(不是特定于密码)的单词列表/数据库。我最喜欢的是Princeton WordNet
答案 4 :(得分:1)
要验证强密码,您应该做的不仅仅是检查词典中的单词。但是如果没有一个库已经在您的平台上执行此操作(顺便说一句是什么?) - 只需将其视为您想要进行拼写检查。如果密码的任何部分通过拼写检查程序,则会失败。
Microsoft有一个library for spell-checking。
如果您特别想使用web service, consider this。
答案 5 :(得分:1)
我认为没有必要检查词典,特别是如果你想拒绝一部分密码。英语有很多小词,延伸到多语言词典可能会阻止使用任何合理大小的密码而没有其他任何字母都是'z''q'或'y':'a''on''在''je''嗯''o'等。
我不完全理解为什么当你可以轻松地强加其他简单的规则时,你在字典中关心密码:
最小长度为8个字符的密码必须包含:
答案 6 :(得分:0)
我认为旧的程序是wwwhack ..它有一些你可以用作基础的蛮力词典(我认为它们被包含为平面文本文件),除此之外我不知道有任何地方有普通的PW词典可供公众使用。
答案 7 :(得分:0)
可以使用一对词典/单词列表here。
答案 8 :(得分:0)