Python基礎例項 密碼強度測試

2021-10-23 16:36:37 字數 4913 閱讀 3180

完整**、效果展示

小時候申請qq賬號時,經常被密碼設定難住,設定高強度密碼咋就這麼難呢。今天,就著手寫乙個判斷密碼強度的程式。

通常密碼設定有以下三點要求:1、字元長度需在8-16位之間;2、不能使用空格、中文字元;3、至少含有數字/字母/字元2種組合。另外,針對密碼強度,筆者就不設定太複雜的規則了,在滿足上述3個條件的基礎上,密碼有數字/字母/字元2種組合為密碼強度中,有數字/字母/字元3種組合為密碼強度高。

下面就開始吧= ^ =

1、首先可以分別編寫三個函式,分別判斷密碼中的字元型別(數字/字母/字元);

2、然後編寫乙個判斷合法性程式,判斷密碼長度、字元型別以及組合形式是否合法;

3、最後編寫主程式,按密碼要求思路呼叫上述1和2中函式,即可完成密碼強度判斷

def check_number

(password)

:for c in password:

if c.

isnumeric()

: # str.

isnumeric

()用於判斷字串是否只包含數字字元

return true

break # 遍歷密碼,遇到數字字元及函式返回true並結束遍歷;若遍歷完所有字元無數字字元,則函式返回為none(假)

def check_letter

(password)

:for c in password:

if'a'

<=c<=

'z' or 'a'

<=c<=

'z':

return true

break

def check_mark

(password)

:for c in password:

ifnot

(c.isnumeric

() or 'a'

<=c<=

'z' or 'a'

<=c<=

'z')

:return true

break

def check_legal

(password):if

len(password)

<

8 or len

(password)

>16:

print

('長度需為8-16個字元,請重新輸入。'

)return false

else

:for i in password:

if0x4e00

<=

ord(i)

<=

0x9fa5 or ord

(i)==

0x20

: # ox4e00等十六進製制數分別為中文字元和空格的unicode編碼

print

('不能使用空格、中文,請重新輸入。'

) # ord

(c)用於返回乙個字元c的unicode數值

return false

else

: key =

0 key +=1if

check_number

(password)

else

0 key +=1if

check_letter

(password)

else

0 key +=1if

check_mark

(password)

else

0if key >=2:

return true

else

:print

('至少含數字/字母/字元2種組合,請重新輸入。'

)return false

def main()

:while true:

password =

input

('請輸入密碼:')if

check_legal

(password)

: strength_level =

0 strength_level +=1if

check_number

(password)

else

0 strength_level +=1if

check_letter

(password)

else

0 strength_level +=1if

check_mark

(password)

else

0if strength_level ==2:

print

('密碼設定成功!'

+'*'*10

+'強度等級中'

+'*'*10

)break

else

:print

('密碼設定成功!'

+'*'*10

+'強度等級高'

+'*'*10

)break

else

:continue

def check_number

(password)

:for c in password:

if c.

isnumeric()

:return true

break

def check_letter

(password)

:for c in password:

if'a'

<=c<=

'z' or 'a'

<=c<=

'z':

return true

break

def check_mark

(password)

:for c in password:

ifnot

(c.isnumeric

() or 'a'

<=c<=

'z' or 'a'

<=c<=

'z')

:return true

break

def check_legal

(password):if

len(password)

<

8 or len

(password)

>16:

print

('長度需為8-16個字元,請重新輸入。'

)return false

else

:for i in password:

if0x4e00

<=

ord(i)

<=

0x9fa5 or ord

(i)==

0x20

: # ox4e00等十六進製制數分別為中文字元和空格的unicode編碼

print

('不能使用空格、中文,請重新輸入。'

)return false

else

: key =

0 key +=1if

check_number

(password)

else

0 key +=1if

check_letter

(password)

else

0 key +=1if

check_mark

(password)

else

0if key >=2:

return true

else

:print

('至少含數字/字母/字元2種組合,請重新輸入。'

)return false

def main()

:while true:

password =

input

('請輸入密碼:')if

check_legal

(password)

: strength_level =

0 strength_level +=1if

check_number

(password)

else

0 strength_level +=1if

check_letter

(password)

else

0 strength_level +=1if

check_mark

(password)

else

0if strength_level ==2:

print

('密碼設定成功!'

+'*'*10

+'強度等級中'

+'*'*10

)break

else

:print

('密碼設定成功!'

+'*'*10

+'強度等級高'

就這麼點**,小白我**+編輯的時間花了3個多小時。

創作不易,各位觀眾老爺們給個贊吧~ .~

Python密碼的強度

密碼是賬戶的重要安全保障,涉及到安全問題,太簡單的密碼容易被猜到或破解。請用程式實現 用函式實現乙個校驗密碼強度的函式,用於提醒使用者在註冊時,密碼是否足夠安全。以下為密碼強度校驗規則 密碼長度在 6 位及以上,強度 1,在 8 位及以上,強度 2,12 位及以上,強度 4 有大寫字母,強度 2 除...

python判斷密碼強度並輸出 密碼強度判斷

python 庫def pdsz cd nnnn false for c in cd if c.isnumeric nnnn true break return nnnn def pdzm cd nnnn false for c in cd if c.isupper nnnn true break ...

python實現密碼的強度 Python密碼強度

對我來說,regex絕對是最簡單的方法。給定乙個示例密碼password,您檢查密碼的方式是 import re check if contains at least one digit if re.search r d password print has a digit check if con...