|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 python小能手 于 2017-9-14 17:15 编辑
- #密码安全性检查代码
- #
- #低级密码要求:
- # 1.密码由单纯的数字或字母组成
- # 2.密码长度小于等于8位
- #
- #中级密码要求:
- # 1.密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}\|)任意两种组合
- #密码长度不能低于8位
- #
- #高级密码要求:
- # 1.密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}\|)三种组合
- # 2.密码只能由字母开头
- # 3.密码长度不能低于16位
- str0 = """请按以下方式提升您的密码安全级别:
- 1.必须由数字、字母及特殊字符三种组合(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}\|)
- 2.密码只能由字母开头
- 3.密码长度不能低于16位"""
- str1 = '您的密码安全级别评定为:低\n' + str0 + """
- 4.替王尼玛给隔壁老王送上一把水果刀
- 5.告诉你的孩子,他是充话费下送的
- 6.召集另外三只小甲鱼,喂他们突变剂,救纽约人民于水火
- """
- str2 = '您的密码安全级别评定为:中\n' +str0 +"""
- 4.扶老奶奶过马路,帮室友补袜子
- """
- str3 = '您的密码安全评定为:高\n请继续保持!'
- special = "~!@#$%^&*()_=-/,.?<>;:[]{}\|"
- letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
- number = '0123456789'
- t = 'y'
- while t == 'y':
- password = input("请输入需要检查的密码组合:")
- #用num来统计字符类型出现次数
- num = 0
- a = b = c = 0
- #输入的不能为空
- while password == '':
- password = input("不能为空,请重新输入:")
- #计算num的值,如果输入的全部是字符,那么num=0,所以才会有<=1
- if password.isnumeric() or password.isalpha():
- num = 1
- else:
- for i in password:
- if a == 0 and i in special:
- num += 1
- a = 1
- elif b ==0 and i in number:
- num += 1
- b = 1
- elif c == 0 and i in letter:
- num += 1
- c = 1
- if password[0] in letter and num == 3 and len(password) >= 16:
- print(str3)
- elif num >= 2 and len(password) >= 8:
- print(str2)
- elif num <= 1 and len(password) < 8:
- print(str1)
- t = input("还要再测试么?(”y“继续,其他退出)")
复制代码
不明白第40行, 定义a=b=c=0是什么用处,已经后面a=1 b=1 c=1又是什么用意,
请各位老师解答,谢谢了
a=b=c=0用于你第二次input(),进入while t == 'y': 重置abc,好进行第二次的for i in password:里面的判断
a=1 b=1 c=1 是限定了num只能是1,2,3直接。。当i 第一次为数字时,执行elif b ==0 and i in number:,得到b=1,那么下一次for i in password:,i再次为数字时就不会执行elif b ==0 and i in number:了
|
|