鱼C论坛

 找回密码
 立即注册
查看: 2440|回复: 1

[已解决]关于python作业“密码安全性检查”,发现一个问题

[复制链接]
发表于 2016-4-23 17:59:19 | 显示全部楼层 |阅读模式

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

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

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



  15. symbols =r'''~`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
  16. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  17. nums = '0123456789'

  18. passwd = input('请输入需要检查的密码组合:')

  19. #判断长度
  20. length = len(passwd)

  21. while (passwd.isspace() or length == 0):
  22.     passwd = input('您输入的密码为空(或空格),请重新输入:')

  23. if length <=8:
  24.     flag_len = 1
  25. elif 8 < length < 16:
  26.     flag_len = 2
  27. else:
  28.     flag_len = 3

  29. flag_con = 0

  30. #判断是否包含特殊字符
  31. for each in passwd:
  32.     if each in symbols:
  33.         flag_con += 1
  34.         break

  35. #判断是否包含字母
  36. for each in passwd:
  37.     if each in chars:
  38.         flag_con += 1
  39.         break

  40. #判断是否包含数字
  41. for each in passwd:
  42.     if each in nums:
  43.         flag_con += 1
  44.         break

  45. #打印结果
  46. while 1 :
  47.     print('您的密码安全级别评定为:', end='')
  48.     if flag_len == 1 or flag_con == 1 :
  49.         print('低')
  50.     elif flag_len == 2 or flag_con == 2 :
  51.         print('中')
  52.     else:
  53.         print('高')
  54.         print('请继续保持')
  55.         break

  56.     print('请按以下方式提升您的密码安全级别:\n\
  57.     \t1.密码必须由数字、字母及特殊字符三种组合\n\
  58.     \t2.密码只能由字母开头\n\
  59.     \t3.密码长度不能低于16位')
  60.     break
复制代码





运行之后提示输入需要检查的密码组合,这个时候不输入东西直接回车,会提示重新输入,然后随便输入什么一直就提示请重新输入了,不知道大家发现没有 ,如下:
请输入需要检查的密码组合:
您输入的密码为空(或空格),请重新输入:455452
您输入的密码为空(或空格),请重新输入:145445210dfgdf
您输入的密码为空(或空格),请重新输入:34554341@@@5313
您输入的密码为空(或空格),请重新输入:JHGHJGJ32310202!((*^&*%
您输入的密码为空(或空格),请重新输入:
最佳答案
2016-4-23 23:45:27
  1. # 密码安全性检查代码
  2. #
  3. # 低级密码要求:
  4. #   1. 密码由单纯的数字或字母组成
  5. #   2. 密码长度小于等于8位
  6. #
  7. # 中级密码要求:
  8. #   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
  9. #   2. 密码长度不能低于8位
  10. #
  11. # 高级密码要求:
  12. #   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
  13. #   2. 密码只能由字母开头
  14. #   3. 密码长度不能低于16位



  15. symbols =r'''~`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
  16. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  17. nums = '0123456789'

  18. passwd = input('请输入需要检查的密码组合:')

  19. #判断长度
  20. length = len(passwd)

  21. while (passwd.isspace() or length == 0):  ##[color=Red][/color]#第一次输入为空,这里length一直为零,while里面没有将length重新赋值
  22.     passwd = input('您输入的密码为空(或空格),请重新输入:')
  23.     length=len(passwd)


  24. if length <=8:
  25.     flag_len = 1
  26. elif 8 < length < 16:
  27.     flag_len = 2
  28. else:
  29.     flag_len = 3

  30. flag_con = 0

  31. #判断是否包含特殊字符
  32. for each in passwd:
  33.     if each in symbols:
  34.         flag_con += 1
  35.         break

  36. #判断是否包含字母
  37. for each in passwd:
  38.     if each in chars:
  39.         flag_con += 1
  40.         break

  41. #判断是否包含数字
  42. for each in passwd:
  43.     if each in nums:
  44.         flag_con += 1
  45.         break

  46. #打印结果
  47. while 1 :
  48.     print('您的密码安全级别评定为:', end='')
  49.     if flag_len == 1 or flag_con == 1 :
  50.         print('低')
  51.     elif flag_len == 2 or flag_con == 2 :
  52.         print('中')
  53.     else:
  54.         print('高')
  55.         print('请继续保持')
  56.         break

  57.     print('请按以下方式提升您的密码安全级别:\n\
  58.     \t1.密码必须由数字、字母及特殊字符三种组合\n\
  59.     \t2.密码只能由字母开头\n\
  60.     \t3.密码长度不能低于16位')
  61.     break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-23 23:45:27 | 显示全部楼层    本楼为最佳答案   
  1. # 密码安全性检查代码
  2. #
  3. # 低级密码要求:
  4. #   1. 密码由单纯的数字或字母组成
  5. #   2. 密码长度小于等于8位
  6. #
  7. # 中级密码要求:
  8. #   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
  9. #   2. 密码长度不能低于8位
  10. #
  11. # 高级密码要求:
  12. #   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
  13. #   2. 密码只能由字母开头
  14. #   3. 密码长度不能低于16位



  15. symbols =r'''~`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
  16. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  17. nums = '0123456789'

  18. passwd = input('请输入需要检查的密码组合:')

  19. #判断长度
  20. length = len(passwd)

  21. while (passwd.isspace() or length == 0):  ##[color=Red][/color]#第一次输入为空,这里length一直为零,while里面没有将length重新赋值
  22.     passwd = input('您输入的密码为空(或空格),请重新输入:')
  23.     length=len(passwd)


  24. if length <=8:
  25.     flag_len = 1
  26. elif 8 < length < 16:
  27.     flag_len = 2
  28. else:
  29.     flag_len = 3

  30. flag_con = 0

  31. #判断是否包含特殊字符
  32. for each in passwd:
  33.     if each in symbols:
  34.         flag_con += 1
  35.         break

  36. #判断是否包含字母
  37. for each in passwd:
  38.     if each in chars:
  39.         flag_con += 1
  40.         break

  41. #判断是否包含数字
  42. for each in passwd:
  43.     if each in nums:
  44.         flag_con += 1
  45.         break

  46. #打印结果
  47. while 1 :
  48.     print('您的密码安全级别评定为:', end='')
  49.     if flag_len == 1 or flag_con == 1 :
  50.         print('低')
  51.     elif flag_len == 2 or flag_con == 2 :
  52.         print('中')
  53.     else:
  54.         print('高')
  55.         print('请继续保持')
  56.         break

  57.     print('请按以下方式提升您的密码安全级别:\n\
  58.     \t1.密码必须由数字、字母及特殊字符三种组合\n\
  59.     \t2.密码只能由字母开头\n\
  60.     \t3.密码长度不能低于16位')
  61.     break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 06:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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