鱼C论坛

 找回密码
 立即注册
查看: 1911|回复: 2

[已解决]密码安全性检查中的问题

[复制链接]
发表于 2017-9-14 17:12:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 python小能手 于 2017-9-14 17:15 编辑
  1. #密码安全性检查代码
  2. #
  3. #低级密码要求:
  4. # 1.密码由单纯的数字或字母组成
  5. # 2.密码长度小于等于8位
  6. #
  7. #中级密码要求:
  8. # 1.密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}\|)任意两种组合
  9. #密码长度不能低于8位
  10. #
  11. #高级密码要求:
  12. # 1.密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}\|)三种组合
  13. # 2.密码只能由字母开头
  14. # 3.密码长度不能低于16位
  15. str0 = """请按以下方式提升您的密码安全级别:
  16. 1.必须由数字、字母及特殊字符三种组合(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}\|)
  17. 2.密码只能由字母开头
  18. 3.密码长度不能低于16位"""

  19. str1 = '您的密码安全级别评定为:低\n' + str0 + """
  20. 4.替王尼玛给隔壁老王送上一把水果刀
  21. 5.告诉你的孩子,他是充话费下送的
  22. 6.召集另外三只小甲鱼,喂他们突变剂,救纽约人民于水火
  23. """
  24. str2 = '您的密码安全级别评定为:中\n' +str0 +"""
  25. 4.扶老奶奶过马路,帮室友补袜子
  26. """
  27. str3 = '您的密码安全评定为:高\n请继续保持!'

  28. special = "~!@#$%^&*()_=-/,.?<>;:[]{}\|"
  29. letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  30. number = '0123456789'
  31. t = 'y'

  32. while t == 'y':
  33.     password = input("请输入需要检查的密码组合:")

  34. #用num来统计字符类型出现次数
  35.     num = 0
  36.     a = b = c = 0
  37. #输入的不能为空
  38.     while password == '':
  39.         password = input("不能为空,请重新输入:")
  40. #计算num的值,如果输入的全部是字符,那么num=0,所以才会有<=1
  41.     if password.isnumeric() or password.isalpha():
  42.         num = 1
  43.     else:
  44.         for i in password:
  45.             if a == 0 and i in special:
  46.                 num += 1
  47.                 a = 1
  48.             elif b ==0 and i in number:
  49.                 num += 1
  50.                 b = 1
  51.             elif c == 0 and i in letter:
  52.                 num += 1
  53.                c = 1
  54.     if password[0] in letter and num == 3 and len(password) >= 16:
  55.         print(str3)
  56.     elif num >= 2 and len(password) >= 8:
  57.         print(str2)
  58.     elif num <= 1 and len(password) < 8:
  59.         print(str1)
  60.     t = input("还要再测试么?(”y“继续,其他退出)")
复制代码




不明白第40行, 定义a=b=c=0是什么用处,已经后面a=1    b=1   c=1又是什么用意,  
请各位老师解答,谢谢了
最佳答案
2017-9-14 17:32:36
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:了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-9-14 17:32:36 | 显示全部楼层    本楼为最佳答案   
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:了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-14 18:37:07 | 显示全部楼层
ButcherRabbit 发表于 2017-9-14 17:32
a=b=c=0用于你第二次input(),进入while t == 'y': 重置abc,好进行第二次的for i in password:里面的判断
...

再次感谢Rabbit,终于明白了....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-2 09:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表