|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 WilsonWolf2333 于 2019-12-13 10:59 编辑
题目:请写一个密码安全性检查的脚本 check.py
题目给出的条件:
- #密码安全性检查代码
- #
- #低级密码要求:
- #1.密码由单纯的数字或字母组成
- #2.密码长度小于等于8位
- #
- #中级密码的要求:
- #1.密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=/,.?<>;:[]{}|\)任意两种组合
- #2.密码长度不能低于8位
- #
- #高级密码要求:
- #1.密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=/,.?<>;:[]{}|\)三种组合
- #2.密码只能由字母开头
- #3.密码长度不能低于16位
复制代码
我自己的思路和代码:
- enter = input('请设置密码:')
- if enter.isalpha() or enter.isdecimal(): #密码由单纯的数字 或者 单纯的字母组成
- if len(enter) <= 8: #如果密码小于等于8位
- print('密码强度:低')
- else: #如果密码大于8位
- print('检测到密码为纯字母或者纯数字组合,而且密码长度大于8位')
- else: #如果密码不是由纯数字 或者 密码不是由纯字母组成
- #使用for in的筛选方法,对每个元素判断,从三个元组中,分别是数字集合、字母集合、特殊符号集合
- #列出数字、字母、特殊符号三个元组
- #保留记录tuple1 = ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')
- #tuple2 = ('0','1','2','3','4','5','6','7','8','9')
- #tuple3 = ('~','!','@','#',','%','^','&','*','(',')','_','=','/',',','.','?','<','>',';',':','[',']','{','}','|','\\')
- #上方根本不用每个元素都加单引号手动捂脸
- tuple1 = ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') #题目没有说大小写所以这个元组囊括了大写和小写字母
- tuple2 = ('0123456789')
- tuple3 = (r'~!@#$%^&*()_=/,.?<>;:[]{}|\\') #因为\放在字符串最后会报错,所以网上查到这种情况要放置偶数个\
- count1 = 0 #如果不设置初始值都为0,那么当密码中没有字母时,下方语句if count1 + count2 + count3会报错,以此类推
- count2 = 0
- count3 = 0
- for each in enter:
- if each in tuple1:
- count1 = 1 #统计密码中是否有字母 只要有字母即使最后一个字符不是字母,那么count1值也会为1(这句话为什么不是红色了)
- if each in tuple2:
- count2 = 1 #统计密码中是否有数字
- if each in tuple3:
- count3 = 1 #统计密码中是否有特殊符号
- if count1 + count2 + count3 == 2: #如果密码有任意两种组合
- if len(enter) >= 8: #如果密码长度大于等于8
- print('密码强度:中')
- else: #如果密码长度小于8
- print('密码由数字、字母和特殊符号中的两种元素组成,而且密码长度小于8位')
- if count1 + count2 + count3 == 3: #如果密码三种元素都包含
- if enter[0] in tuple1: #如果密码首位为字母
- if len(enter) >= 16: #如果密码长度大于等于16
- print('密码强度:高')
- else: #如果密码长度小于16位
- print('密码由三种元素组成,密码强度小于16位')
- else: #如果密码首位不是字母
- print('密码由三种元素组成,而且密码首位不是字母')
复制代码 |
|