如何制作密码检查器?

时间:2017-10-08 10:18:57

标签: python passwords

我尝试创建一个密码检查器,要求用户输入8到24个字符之间的密码(如果超出此范围,则会显示错误消息)。此外,根据用户输入的密码长度添加或减少点数。

  

如果至少有一个'大写','小写','符号'或'数字':   加5点。

     

如果有资本,数字和更低:增加15分。

     

如果输入的密码是'QWERTY'形式:减去15分。

到目前为止,这是我的代码:

passcheck = input("Enter a password to check: ") 

passlength = len(passcheck)

symbols = {'!','$','%','^','&','*','(',')','-','_','=','+'}
qwerty = ["qwertyuiop", "asdfghjkl", "zxcvbnm"]

upper = sum(1 for character in passcheck if character.isupper())
lower = sum(1 for character in passcheck if character.islower())
num = sum(1 for character in passcheck if character.isnumeric())
sym = passcheck.count('!$%^&*()_-+=')

if passlength <8 or passlength >24:
    print("ERROR. Password must be between 8-24 characters long")
else:
    if upper in passcheck > 0:
        score += 5
    if lower in passcheck > 0:
        score += 5
    if num in passcheck > 0:
        score += 5

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

import sys

passcheck = input("Enter a password to check: ")

checking=set(passcheck)

passlength = len(passcheck)

points=0

symbols = {'!','$','%','^','&','*','(',')','-','_','=','+'}
qwerty = ["qwertyuiop", "asdfghjkl", "zxcvbnm"]




if passlength <8 or passlength >24:
    print("ERROR. Password must be between 8-24 characters long")


else:

    for i in qwerty:

        if i in passcheck:  #If entered password is in the form of 'QWERTY': subtract 15 points.
            points-=15
            print("your password contain form of 'QWERTY' , Don't use weak password.")
            print(points)
            sys.exit()

if any(i.islower() for i in checking) or any(i.isupper() for i in checking) or any(i for i in checking if i in symbols) or any(i.isdigit() for i in checking):
    points+=5  #If there is at least one 'capital', 'lower case', 'symbol' or 'number': add 5 points.


if any(i.islower() for i in checking) and any(i.isupper() for i in checking) and any(i.isdigit() for i in checking):
    points+=15 #If there is a capital and a number and a lower: add 15 points.



print(points)