想在C ++中创建一个强密码。有什么建议吗?
我认为它应该使用alpha(上层 和更低),数字,特殊 字符。
能够做到这一点会很好 指定最小长度。
避免使用角色会很棒 很难在视觉上区分 喜欢“O”和“O”
让所有人都无效将会很棒 字符相同,字典单词, 颠倒的话,名字。
还有其他提示吗?我在哪里可以找到这样的代码?
答案 0 :(得分:3)
有几种方法。容易不一定是最好的
创建一个表示您要定义的所有字符的字符串(意思是,没有O或0,无论如何),然后用该集合中的随机字符填充随机长度字符串。
下一步是继续生成,直到你传递所有断言。也就是说,检查字典单词,反向名称等。
有些时候发电需要比预期更长的时间,但仍然应该比你能注意到的更快。
答案 1 :(得分:2)
您可以使用OpenSSL's random generator,然后对其进行base64编码。 (不会给你各种各样的随机字符,但会给你很多。)。不幸的是,它也不会做类似的字符密码位。我最喜欢的生成器是here,它提供了您正在谈论的功能。 (遗憾的是,网络)
答案 2 :(得分:2)
APG(自动密码生成器)实现了除最后一个要求之外的所有要求(没有字典单词/用户名/重复字符)。它包括可发音和完全随机的密码生成算法。可发音的密码看起来像这样:
yevGaijra clishahopp jewnAms8 RacMevOm Duheamch& raicsant~
它是用C语言编写的,可以在类似BSD的许可证下使用。
以密码的方式说,我不确定你的最后一项要求是否有效......?如果密码生成是真正随机的,则密码aaaaaaaa
与密码6-n&1jIK
一样,如果您的攻击者知道您的算法,则禁止使用aaaaaaaa
之类的密码,你正在减少攻击者的搜索空间。
答案 3 :(得分:1)
您可以尝试TRNG设备加上一些known algorithms, 用它带来最好的方式;)
答案 4 :(得分:1)
有多个来源使用的文档化要求,例如FIPS 181。
我建议查看热门Automated Password Generator实用程序的文档。查看它提供的选项以及功能可能对您有很大帮助。
另外,请查看checking生成的密码,以使其符合应用程序的阈值。
维基百科还列出了一些existing designs和标准。