如何在C++中创建强密码字符串?
想在C++中创建一个强密码。有什么建议么?如何在C++中创建强密码字符串?
我假定它应该使用α(上 和下部),数字,特殊字符 。
这将是一件好事,能够 指定最小长度。
这将是巨大的,以避免那些难以从视觉上分辨 像“O”和“O”字
这将是巨大的,无效的所有 人物一样,字典中的字, 逆转的话,名字。
其他提示?我在哪里可以找到这样的代码?
APG(自动密码生成器)实现除了最后一项要求之外的所有内容(无字典词/用户名/重复字符)。它包括可发音和完全随机的密码生成算法。可指认的密码看起来是这样的:
yevGaijra clishahopp jewnAms8 RacMevOm Duheamch& raicsant~
它是用C语言编写的,可以在类似BSD的许可下使用。
密码方面,我不确定你最后的要求是否有效...?如果密码的生成是真正随机的,那么密码aaaaaaaa
与密码6-n&1jIK
的密码相同,如果攻击者知道你的算法,那么通过禁止密码aaaaaaaa
,你可以减少攻击者的搜索空间。
有几种方法。容易不一定是最好的
创建一个字符串,表示您想要定义的所有字符(意思是说,不是O或0的,不管),然后用随机字符填充随机字符串。
下一步是继续生成,直到您通过所有断言。也就是说,检查字典中的单词,反向名称等。
有些时候,生成时间会比预期的要长,但仍然会比您注意到的要快。
你可以使用OpenSSL's random generator,然后base64对它进行编码。 (不会给你所有的随机角色,但会让你很多。)可悲的是,它也不会做类似字符的密码。我最喜欢的生成器是here,它提供了你正在讨论的功能。 (仅限网络,可悲)
有几个来源使用的记录要求,如FIPS 181。
我会建议看看流行的Automated Password Generator实用程序的文档。看看它提供的选项和功能对你来说可能会有很长的路要走。
此外,请查看checking您的生成密码,以便它们符合您的应用程序的阈值。
维基百科还列出了一些existing designs和标准。
我喜欢关于德国Enigma加密机器如何被部分破坏的故事,它注意到它从未将明文字符加密为相同的密文字符,它*总是*选择了不同的字母。 – 2009-01-13 20:59:12