当前位置: 首页 > 面试题库 >

在Python 3中生成具有要求的随机字符串

盖博简
2023-03-14
问题内容

我正在尝试为具有以下密码要求的Active
Directory生成随机密码:至少8个字符,至少一个特殊字符,至少一位数字,至少一个小写字母和至少一个大写字母。

使用以下代码,我可以生成一个随机密码,并检查它是否包含特殊字符。生成新密码,直到找到特殊字符为止。

special_char = "!@%/()=?+.-"

password_string = "".join([random.choice(string.ascii_lowercase + string.ascii_digits + string.ascii_uppercase + special_char) for n in range(8)])

while any(c in password_string for c in special_char) is not True:
    password_string = "".join([random.choice(string.ascii_lowercase + string.ascii_digits + string.ascii_uppercase + special_char) for n in range(8)])

以下问题是,它仅检查特殊字符并生成新密码可能会摆脱其他要求(假设它们已经存在)。如何才能有效地实施AD密码要求?谢谢你的帮助。


问题答案:

您可以首先生成一个匹配的密码,方法是先选择一个特殊的字符和一个数字(以相同的方式选择一个小写字母和一个大写字母),然后填满所有内容,最后对顺序进行重新排序:

pwlist = ([random.choice(special_char),
           random.choice(string.ascii_digits),
           random.choice(string.ascii_lowercase),
           random.choice(string.ascii_uppercase),
          ]  
         + [random.choice(string.ascii_lowercase
                          + string.ascii_uppercase
                          + special_char
                          + string.ascii_digits) for i in range(4)])
random.shuffle(pwlist)
pw = ''.join(pwlist)


 类似资料:
  • 问题内容: 如何使用Java创建符合系统长度和字符集要求的随机密码? 我必须创建一个随机密码,密码长度为10-14个字符,并且至少具有一个大写字母,一个小写字母和一个特殊字符。不幸的是,某些特殊字符 太 特殊而无法使用,因此我不能仅使用打印的ASCII。 该站点上的许多示例都会生成一个随机的密码或会话密钥,而在字符中没有足够的熵,或者在像上面给出的那样的商业环境中没有现实的要求,因此,我想提出更明

  • 问题内容: 我想要一个5个字符串,该字符串由从集合中随机选择的字符组成。 用JavaScript做到这一点的最佳方法是什么? 问题答案: 我认为这将为您工作:

  • 问题内容: 我想生成一个大小为的字符串。 它应该由数字和大写英文字母组成,例如: 6U1S75 4Z4UKK U911K4 问题答案: 一行回答: 甚至更短,从Python 3.6开始,使用: 加密更安全的版本;参见: 详细而言,具有清除函数以进一步重用: 它是如何工作的 ? 我们导入string,一个包含常见ASCII字符序列的模块,以及random一个处理随机生成的模块。 只是串联表示大写AS

  • 本文向大家介绍PHP 生成随机字符串,包括了PHP 生成随机字符串的使用技巧和注意事项,需要的朋友参考一下 要使用PHP生成随机字符串,代码如下- 示例 输出结果 示例 现在让我们来看另一个示例- 输出结果

  • cmf_random_string($len = 6) 功能 随机字符串生成 参数 $len: string 生成的字符串长度 返回 string 随机字符串

  • 问题内容: 我知道如何使用Runes和种子rand.Init与go生成随机字符串。我的问题是,是否可以(使用stdlib)在不使用当前时间戳(安全)的情况下播种rand? 此外,我问,是因为不仅仅依靠时间来为不安全/脆弱的敏感操作生成随机字符串吗? 问题答案: 对于敏感操作,请使用代替: 软件包[crypto /] rand实现了一种加密安全的随机数生成器。 请注意,您不需要(您不需要)seed