背景
前几天在健身房时,我正在使用我的组合锁,并意识到一些对我作为程序员有用的东西。也就是说,我的组合是三组独立的数字,它们要么听起来很相似,要么有一些其他关系使它们易于内存。例如,5-15-25、7-17-2、6-24-5。这些示例似乎很容易记住。
问题
我将如何为密码实现类似的功能?是的,它们应该很难破解,但它们也应该易于最终用户记住。组合锁通过混合具有相似发音的数字和具有相似属性的数字来做到这一点(7-17-23:所有质数,17 在 7 之后立即从舌头上滚出,23 是另一个质数,并且是(出那个集合的),要记住的“难”的那个)。
标准
- 密码应该容易记住。
Dog!Wolf
很容易记住,但一旦攻击者知道您的网站给出了该组合,它就会变得非常容易检查。 - 单词或字母应该大部分遵循相同的发音(大部分)。
- 至少 8 个字母
- 不使用
!@#$%^&*();'{}_+<>?,./
这些标点符号虽然适用于“硬”密码,但听起来并不“容易记住”。
资源
这个问题与语言无关,但如果有 C# 的特定实现,我会很高兴听到它。
更新
一些用户表示“这是糟糕的密码安全性”。 不要假设这是针对网站的。这可能只是让我为自己制作一个根据这些规则生成密码的应用程序。这是一个例子。
The letters A-C-C-L-I-M-O-P 'flow', and they happen to be two regular words put together (Acclimate and Mop). Further, when a user says these letters, or says them as a word, it's an actual word for them. Easy to remember, but hard to crack (dictionary attack, obviously).
这个问题有两个部分的目标:
- 从发音相似的字母构造密码(使用头韵)或
- 构建密码,以类似方式将常用词组合在一起,以生成字典中没有的第三组字母。
最佳答案
你可能想看看:
- apg 使用并在 FIPS-181 中解释的可发音密码生成算法
- Koremutake
关于algorithm - 语音内存密码生成算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624425/