写点什么

使用 python 校验密码强度

作者:技能实验室
  • 2022-10-19
    河南
  • 本文字数:1176 字

    阅读完需:约 1 分钟

python 的内置库 string 是个好东西,使用 string 可以用来生成密码,或者惊喜密码强度检测;


随机生成密码说到随机,就不能不提 python 中的另一个内置库 random;random 是一个随机数函数,包含多个生成随机数的方法:


  • random.random() 用于生成一个[0,1)范围的浮点数

  • random.uniform(a, b) 用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限

  • random.randint(a, b) 用于生成一个指定范围内的整数。其中参数 a 是下限,参数 b 是上限

  • random.choice(string) 从一个 string 中随机选取一个字符


string 是 python 中一个内置的字符串;


whitespace = ' \t\n\r\v\f'ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'ascii_letters = ascii_lowercase + ascii_uppercasedigits = '0123456789'hexdigits = digits + 'abcdef' + 'ABCDEF'octdigits = '01234567'punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""printable = digits + ascii_letters + punctuation + whitespace
复制代码


结合以上两个库,可以实现一个随机密码的生成功能;两个库都不需要安装,直接引入即可


import stringimport random


def genPwd(n=8):    all_chs=string.digits+string.ascii_letters+string.punctuation     #包含0-9+a-z+A-Z+特殊符号的字符    print("".join(random.sample(all_chs,n)))    result=''    for i in range(n):        ch=random.choice(all_chs)                #从all_chs中选择一个字符        result+=ch                                          #拼接    return result
复制代码


传入一个数字,返回指定长度额密码;




如果只是进行强度检测,一个 string 库足够了;


    passwordDic={        'dig' : string.digits,              # '0123456789'        'lower' : string.ascii_lowercase,    # 'abcdefghijklmnopqrstuvwxyz'        'upper' : string.ascii_uppercase,    # 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'        'pun' : string.punctuation          # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~    }    i, j, k, s = 0, 0, 0, 0    sum = 0    for x in str:        if x in passwordDic.get('dig'):            i += 1        elif x in passwordDic.get('lower'):            j += 1        elif x in passwordDic.get('upper'):            k += 1        elif x in passwordDic.get('pun'):            s += 1    i1, j1, k1, s1 = int(bool(i)), int(bool(j)), int(bool(k)), int(bool(s))    sum = i1 + j1 + k1 + s1    if sum == 0:        return '错误密码格式'    elif sum ==1:        return '弱密码'    elif sum == 2:        return '中低密码'    elif sum == 3:        return '中高密码'    elif sum == 4:        return '强密码'
复制代码


发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022-07-26 加入

还未添加个人简介

评论

发布
暂无评论
使用python校验密码强度_python 3.5+_技能实验室_InfoQ写作社区