2017-09-01 90 views
1

我寫了一個腳本來檢查如果未來用戶提供的密碼是正確的(一個上限和一個小寫字母,一個數字和所有字符是字母數字:密碼強度檢查蟒蛇

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 –

回答

1

之類的東西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教程,因爲所有這些內容都非常接近開頭。

0

Python實現的Dropbox的現實密碼強度估計:

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

+0

我不會推薦此代碼,除非最小長度顯着增加。實際上,字符集的大小與密碼的強度幾乎沒有實際的區別,這完全取決於長度。 $ 12345在這個指標中被認爲是優秀的,根據https://howsecureismypassword.net/將需要一臺平均的計算機大約6ms來破解。另一方面,PotatoKhorneDictionary是一個你已經記得的簡單密碼,大約需要45個百萬年。選擇至少一個不太可能出現在字典中的單詞,你很好。 – Saedeas

+0

@Saedeas是的,你是對的。這太簡單了。 – gushitong