如何在C ++中创建强密码字符串?

时间:2009-01-13 18:32:34

标签: c++ string passwords

想在C ++中创建一个强密码。有什么建议吗?

  • 我认为它应该使用alpha(上层 和更低),数字,特殊 字符。

  • 能够做到这一点会很好 指定最小长度。

  • 避免使用角色会很棒 很难在视觉上区分 喜欢“O”和“O”

  • 让所有人都无效将会很棒 字符相同,字典单词, 颠倒的话,名字。

还有其他提示吗?我在哪里可以找到这样的代码?

5 个答案:

答案 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和标准。