密码强度检查蟒蛇

问题描述:

我写了一个脚本来检查如果未来用户提供的密码是正确的(一个上限和一个小写字母,一个数字和所有字符是字母数字:密码强度检查蟒蛇

def check(password): 
    word = list(password) 
    war = 0 
    if len(password) > 8 and len(password) < 24: 
     war += 1 
    if password.isalnum(): 
     war += 1 
    for x in range (0, len(word)): 
     if word[x] == word[x].upper() and word[x].isalpha(): 
      war += 1 
      break 
    for x in range (0, len(word)): 
     if word[x] == word[x].lower() and word[x].isalpha(): 
      war += 1 
      break 
    for x in range (0, len(word)): 
     if word[x].isdigit(): 
      war += 1 
      break 
    return war == 5 

,我不知道怎么样把它缩短和simplier,其中Python工具,关键字可以帮助?在此先 谢谢,我与Python初学者,也没有阅读文档尚未

+2

工作代码只是求“含糊”的改善应该在代码审查公布,不在这里... – Julien

+0

它看起来像你已经知道要走的路,但只是承认懒惰:你如何读一些文档,教程? – Julien

+0

https://pypi.python.org/pypi/cracklib –

之类的东西word = list(password)其次for x in range(0, len(word)):真的是没有必要的。你可以轻松地做for character in password:,跳过转换为l ist,跳过创建索引等。比较然后变成诸如if character.isalpha() and character == character.upper():之类的东西。使用零作为range()的第一个参数也是多余的。这绝对值得您花时间浏览python教程,因为所有这些内容都非常接近开头。

Python实现的Dropbox的现实密码强度估计:

https://github.com/dwolfhub/zxcvbn-python

+0

我不会推荐此代码,除非最小长度显着增加。实际上,字符集的大小与密码的强度几乎没有实际的区别,这完全取决于长度。 $ 12345在这个指标中被认为是优秀的,根据https://howsecureismypassword.net/将需要一台平均的计算机大约6ms来破解。另一方面,PotatoKhorneDictionary是一个你已经记得的简单密码,大约需要45个百万年。选择至少一个不太可能出现在字典中的单词,你很好。 – Saedeas

+0

@Saedeas是的,你是对的。这太简单了。 – gushitong