python正则表达式--密码强度检测器

背景

昨天在写账号密码管理器时本来就想着写一个密码强度检测的了,无奈不会写正则表达式,今天就来稍微学下简单的并写一个密码强度检测。

一、思路

使用正则表达式匹配密码。
如果密码长度小于6,密码强度为低
如果含有数字,小写字母,大写字母,特殊符号密码强度为极高
如果含有以上三种,密码强度为高
如果含有以上两种,密码强度为一般
如果含有以上一种,密码强度为低

二、实现

1.使用正则表达式
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,当 .compile使用match() 和 search() 这两个函数当匹配成功时返回一个 Match 对象,group([group1, …]) 方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用 group() 或 group(0);如果匹配失败,返回None

import re
b = re.compile('[0-9]')
c = re.compile('[a-z]')
d = re.compile('[A-Z]')
e = re.compile('[~!@#$%^&*()+*/?><.;,]')

2.判断密码强度
这里使用了最最最最原始的if判断方法,因为复杂的正则表达式还不会。

import re


a = input('输入密码:')
b = re.compile('[0-9]')
c = re.compile('[a-z]')
d = re.compile('[A-Z]')
e = re.compile('[~!@#$%^&*()+*/?><.;,]')

if len(a)<5:
    print('密码安全性:低')

elif b.search(a) != None and c.search(a) != None and d.search(a) != None and e.search(a) != None :
    print('密码安全性:极高')

elif b.search(a) == None and c.search(a) != None and d.search(a) != None and e.search(a) != None :
    print('密码安全性:高')

elif b.search(a) != None and c.search(a) == None and d.search(a) != None and e.search(a) != None :
    print('密码安全性:高')

elif b.search(a) != None and c.search(a) != None and d.search(a) == None and e.search(a) != None :
    print('密码安全性:高')

elif b.search(a) != None and c.search(a) != None and d.search(a) != None and e.search(a) == None :
    print('密码安全性:高')


elif b.search(a) == None and c.search(a) == None and d.search(a) != None and e.search(a) != None :
    print('密码安全性:一般')

elif b.search(a) == None and c.search(a) != None and d.search(a) == None and e.search(a) != None :
    print('密码安全性:一般')

elif b.search(a) == None and c.search(a) != None and d.search(a) != None and e.search(a) == None :
    print('密码安全性:一般')

elif b.search(a) != None and c.search(a) == None and d.search(a) == None and e.search(a) != None :
    print('密码安全性:一般')

elif b.search(a) != None and c.search(a) == None and d.search(a) != None and e.search(a) == None :
    print('密码安全性:一般')

elif b.search(a) != None and c.search(a) != None and d.search(a) == None and e.search(a) == None :
    print('密码安全性:一般')



elif b.search(a) != None and c.search(a) == None and d.search(a) == None and e.search(a) == None :
    print('密码安全性:低')

elif b.search(a) == None and c.search(a) != None and d.search(a) == None and e.search(a) == None :
    print('密码安全性:低')

elif b.search(a) == None and c.search(a) == None and d.search(a) != None and e.search(a) == None :
    print('密码安全性:低')

elif b.search(a) == None and c.search(a) == None and d.search(a) == None and e.search(a) != None :
    print('密码安全性:低')


3.应用在账号密码小助手中!
我们在生成密码后引入这个小功能:
(账号密码小助手详情看我另外一篇博文哈)

def createpa ():
    a = input('请输入生成密码的平台:')
    b = input('请输入平台登陆账号:')
    c = input('请输入生成密码的位数:')
    d = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_+-=*/{}'
    e = random.sample(d,int(c))
    f = ''.join(e)
    cur.execute('select pingtai,zhanghao from pamanag;')
    ptzhanghao = cur.fetchall()

    for i in ptzhanghao :
        if a == i[0] and b == i[1]:
            print('该平台下账号已存在,请确认。')
            return
    print('生成一条记录:')
    print(f'平台:{a},账号:{b},密码:{f}')
    passwordstrength.checkpa(f)  #这里使用密码检测小功能
    while True:
        g = input('是否保存到数据库?Y/N')
        if g == 'Y' or g =='y':
            cur.execute('insert into pamanag(pingtai,zhanghao,mima) value (%s,%s,%s)',(a,b,f))
            con.commit()
            print('保存成功!')
            return
        elif g == 'N' or g =='n' :
            return
        else :
            print('请输入正确值!')
    #
    # print('新增一条记录:')
    # print(f'平台:{a},账号:{b},密码:{f}')

效果:
python正则表达式--密码强度检测器_第1张图片

结束

在编程的路上正则表达式还是蛮重要的,这篇博文记录下刚接触正则表达式的情况,等对正则表达式更加熟悉的时候再回来看看应该会别有一番滋味吧!

你可能感兴趣的:(python正则表达式--密码强度检测器)