【问题标题】:How do I create a strong password string in C++?如何在 C++ 中创建强密码字符串?
【发布时间】:2010-10-01 05:03:48
【问题描述】:

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

  • 我认为它应该使用 alpha(上 及以下)、数字、特殊 字符。

  • 如果能够 指定最小长度。

  • 最好避免使用字符 难以在视觉上区分的 比如“O”和“O”

  • 最好取消所有 字符相同,字典单词, 颠倒的词,名字。

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

【问题讨论】:

    标签: c++ string passwords


    【解决方案1】:

    有几种方法。简单的不一定是最好的

    创建一个代表您要定义的所有字符的字符串(意思是,没有 O 或 0,等等),然后用该集合中的随机字符填充一个随机长度的字符串。

    下一步是继续生成,直到您通过所有断言。即检查字典单词、反向名称等。

    有时生成所需的时间比预期的要长,但仍应该比您注意到的要快。

    【讨论】:

      【解决方案2】:

      APG(自动密码生成器)实现了除您的最后一个要求之外的所有要求(没有字典单词/用户名/重复字符)。它包括可发音和完全随机的密码生成算法。可发音的密码如下所示:

      yevGaijra
      克利沙霍普
      犹太人Ams8
      RacMevOm
      杜赫姆奇&
      raicsant~

      它是用 C 语言编写的,可在类似 BSD 的许可下使用。

      从密码学上讲,我不确定您的最后一个要求是否有效...?如果密码生成是真正随机的,那么aaaaaaaa 的密码与6-n&1jIK 的密码一样可能,如果你的攻击者知道你的算法,那么通过禁止aaaaaaaa 之类的密码,你正在减少攻击者的搜索空间。

      【讨论】:

      • 我喜欢这个关于德国 Enigma 密码机如何被破解的故事,部分原因是它注意到它从未将明文字符加密为相同的密文字符,它总是选择了不同的信。
      【解决方案3】:

      您可以使用OpenSSL's random generator,然后对其进行base64 编码。 (不会得到各种随机字符,但会得到很多。)。遗憾的是,它也不会执行类似的字符密码位。我最喜欢的生成器是here,它提供了您正在谈论的功能。 (遗憾的是,仅限网络)

      【讨论】:

        【解决方案4】:

        你可以试试TRNG 设备加上一些很好的known algorithms, 最好的方法;)

        【讨论】:

          【解决方案5】:

          有几个来源使用的记录要求,例如FIPS 181

          我建议查看流行的Automated Password Generator 实用程序的文档。查看它提供的选项和功能可能对您有很大帮助。

          另外,请查看checking 您生成的密码,使其符合您的应用程序的阈值。

          维基百科还列出了一些existing designs 和标准。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-06
            • 2011-04-01
            • 2016-04-27
            • 2021-07-19
            • 1970-01-01
            • 2010-11-08
            • 2023-03-09
            相关资源
            最近更新 更多