1. 程式人生 > >20190110-生成密碼以及簡易密碼強度檢查

20190110-生成密碼以及簡易密碼強度檢查

1.生成9位字母的密碼

使用random.choice函式,此函式需要一個序列,因此給定一個序列包含a-z,A-Z

#step1:生成序列
import random
s1=''
for i in range(97,123):
    s1+=chr(i)+chr(i-32)  
#step2: 生成密碼
password=''
for i in range(9):
    password+=random.choice(s1)#從s1序列中隨機選取一個元素
print('9位數的密碼為:',password)

2:生成9位數字和字母的密碼,密碼可能隨機出現數字和字母
此題在上一題的基礎上先生成一個序列包含所有字母和數字,然後使用random.choice()函式

import random
s1=''
for i in range(97,123):
    s1+=chr(i)+chr(i-32)
s1+='0123456789'
print(s1)
#生成包含小寫字母和數字的序列
#另外一個寫法
import string
s1 = string.ascii_letters+string.digits
password=''
for i in range(9):
    password+=random.choice(s1)
print('隨機密碼為:',password)

3.檢測密碼強度

c1 : 長度>=8
c2: 包含數字和字母


c3: 其他可見的特殊字元
強密碼條件:滿足c1,c2,c3
中密碼條件: 只滿足任一2個條件
弱密碼條件:只滿足任一1個或0個條件

思路:先將c1,c2,c3三個條件寫成函式,以Ture和False返回,True為滿足,False為不滿足

step1.寫出3個條件函式

def check_len(password):
    if len(password)>=8:
        return True
#長度大於8則為True
    else:
        return False
def check_letter_type(password):
    import string
    result 
=False for i in string.ascii_letters: #大小寫字母 if i in password: #密碼中包含字母 for j in string.digits: #數字 if j in password: #密碼中包含數字 result =True return result def check_punctuation(password): import string result = False for i in string.punctuation: if i in password: #密碼中包含特殊字元 result =True return result

check_len檢查密碼長度,check_letter_type檢查密碼中是否包含字母和數字,check_punctuation檢查密碼中是否包含特殊字元

step2:檢查密碼滿足幾個條件

def pass_verify(password):
    count = 0 
#使用count來記錄password滿足幾個條件
    if check_len(password):
        count +=1
    if check_letter_type(password):
        count +=1
    if check_punctuation(password):
        count +=1
    if count==3:
        print("強密碼")
    elif count ==2:
        print('中密碼')
    else:
        print('弱密碼')
pass_verify(password)