完整**、效果展示
小時候申請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...