Python关于检测密码强度的问题

2025-05-13 14:26:32
推荐回答(3个)
回答1:

import re
def check_password(passwd):
    if re.match(r'^(?=.*[A-Za-z])(?=.*[0-9])\w{6,}$',passwd):
        print "password %s correct"%passwd
        return True
    else:
        print "password %s is invalid"%passwd
        return False

函数check_password检查passwd必须由6个或以上的普通字符组成,必须有一个英文数字,一个英文字母,成功返回True,不符要求返回False

回答2:

用正则。不过不知道你说的一个大小写字母是指要有一个字母,大小写都可以啊,还是指大写小写字母各一个?

如果是前者:

def check_password(passwd):
p = re.compile(r'^(?=.*?\d)(?=.*?[a-zA-Z]).{6,}$')
return p.match(passwd)

如果是后者:

def check_password(passwd):
p = re.compile(r'^(?=.*?\d)(?=.*?[a-z])(?=.*?[A-Z]).{6,}$')
return p.match(passwd)

回答3:

import re

def check_digit(pwd):
    return len(re.findall('\d', pwd)) > 0
def check_asc_upper(pwd):
    return len(re.findall('[A-Z]', pwd)) > 0
def check_asc_lower(pwd):
    return len(re.findall('[a-z]', pwd)) > 0

def check_password(password):
    return check_digit(password) \
        and check_asc_upper(password) \
        and check_asc_lower(password)