亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何編寫 python 函數來檢查用戶輸入的密碼是否不安全?

如何編寫 python 函數來檢查用戶輸入的密碼是否不安全?

慕婉清6462132 2023-03-08 10:24:03
我需要為一個作業編寫代碼,它將接受用戶輸入的密碼(作為字符串)并讓用戶知道輸入的哪些元素使密碼變弱。要求是密碼長度至少需要8個字符,包括大小寫字母,并包括數字。我的代碼不需要確定密碼是否強,只需要確定密碼弱的原因。到目前為止我寫的代碼如下:    size = len(password)        if size < 8:        print('not long enough')        if password.isalnum():        pass    else:    for x in password:        if x.isupper():            pass        else:            print('no upper case')        for y in password:        if y.islower():            pass        else:            print('no lower case')                return在我的測試運行返回多行“無大寫”和“無小寫”后,我進行了一些更改并使用了 .isalnum 運算符。如果有人能把我推向正確的方向,我將不勝感激,因為這讓我有點困惑
查看完整描述

4 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

沒有正則表達式你可以使用anystr.isnumeric

if not any(map(str.isnumeric, password):
    print('No numbers')


查看完整回答
反對 回復 2023-03-08
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

許多 python 在線密碼檢查器,例如:https ://www.geeksforgeeks.org/password-validation-in-python/


這是一個快速的控制臺程序,您可以像這樣調用:


$ python3 password_checker.py "Testf7788790##$"

Testing password:  Testf7788790##$

Password is valid:  True

$ python3 password_checker.py "insecurePassword"

Testing password:  insecurePassword

Password should contain at least one number

Password is valid:  False

的內容password_checker.py:


#!/usr/bin/python


import sys


def password_check(passwd):

    symbols = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=']

    isValid = False

      

    if len(passwd) < 10:

        print('Password should be at least 10 characters')

    elif not any(char.isdigit() for char in passwd):

        print('Password should contain at least one number')

    elif not any(char.isupper() for char in passwd):

        print('Password should contain at least one uppercase character')

    elif not any(char.islower() for char in passwd):

        print('Password should contain at least one lowercase character')

    elif not any(char in symbols for char in passwd):

        print('Password should contain at least one special character from list: ', symbols)

    else:

      isValid = True


    return isValid


arguments = sys.argv

if len(arguments) < 2:

    print('No password could be parsed by argv')

    valid_password = False

else:

    password = arguments[1]

    print('Testing password: ', password)

    valid_password = password_check(password)


print('Password is valid: ', valid_password)


查看完整回答
反對 回復 2023-03-08
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

(其他答案已經給了你很好的答案,所以這不是一個完整的答案,它只是對出了什么問題的解釋。)導致問題的代碼區域是


for x in password:

        if x.isupper():

            pass

        else:

            print('no upper case')

for y in password:

        if y.islower():

            pass

        else:

            print('no lower case')

您正在遍歷整個密碼,檢查每個字符是否為大寫,如果不是,則打印出“無大寫”。問題是如果單詞的單個字符不是大寫,"that_character_that_isn't_uppercase".isupper() 將返回 false,并打印錯誤語句。例如,密碼 PaSSWORD 將返回一個“無大寫字母”,因為“a”.isupper() 為 False。密碼 passworD 將返回 7 個“無大寫字母”,因為字符 p、a、s、s、w、o、r 都是小寫字母。x.islower() 測試也發生了同樣的事情,您正在查看每個字符是否都是小寫的。我會實施這樣的事情:


#password.islower() will return true if all the entire string is lowercase(and thus not uppercase)

if password.islower():

    print("No upper case")

elif password.isupper():

    print("No lower case")

#Again, password.isupper() sees if all letters are uppercase(which means that there is no lowercase letters).

希望這有幫助!


查看完整回答
反對 回復 2023-03-08
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

我寧愿使用正則表達式。


In [122]: def validate(password):

     ...:     return True if re.match("(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}", password) else False

     ...:


In [123]: validate("helloas")

Out[123]: False


In [124]: validate("helH12asfgvGh")

Out[124]: True


查看完整回答
反對 回復 2023-03-08
  • 4 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號