鱼C论坛

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

求助第十四课检测密码强度问题!

[复制链接]
发表于 2017-7-21 18:00:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 test1 于 2017-7-21 18:06 编辑
  1. symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
  2. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3. nums = '0123456789'

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

  5. # 判断长度
  6. length = len(passwd)

  7. while (passwd.isspace() or length == 0) :
  8.     passwd = input("您输入的密码为空(或空格),请重新输入:")
  9. #问题1 如果不符合输入要求,重新输入一个字符串,需要重新对其长度进行判断吧?
  10. if length <= 8:
  11.     flag_len = 1
  12. elif 8 < length < 16:
  13.     flag_len = 2
  14. else:
  15.     flag_len = 3

  16. flag_con = 0

  17. # 判断是否包含特殊字符
  18. for each in passwd:
  19.     if each in symbols:
  20.         flag_con += 1
  21.         break
  22.    
  23. # 判断是否包含字母
  24. for each in passwd:
  25.     if each in chars:
  26.         flag_con += 1
  27.         break

  28. # 判断是否包含数字
  29. for each in passwd:
  30.     if each in nums:
  31.         flag_con += 1
  32.         break   

  33. # 打印结果
  34. while 1 :
  35.     print("您的密码安全级别评定为:", end='')
  36.     if flag_len == 1 or flag_con == 1 :
  37.         print("低")  #问题2.  逻辑判断条件是否与要求一致?
  38.     elif flag_len == 2 or flag_con == 2 :
  39.         print("中")  #问题3.  逻辑判断条件是否与要求一致?
  40.     else :
  41.         print("高")
  42.         print("请继续保持")
  43.         break

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


这是小甲鱼老师写的代码,确实能读懂了,现在我自己想改编一下
条件我读取pass.txt 循环里面的字符串,也判断长度和代表值,但是我一直解决了当前问题但感觉没处理好还是没达到自己理想的,我最终意思是
“比如我flag_con=1 包含特殊字符 flag_con=2包含小写字母, 这时我在pass.txt里面搜索,比如查到1qaz!QAZ 这时候1qaz!QAZ长度即大于8个字符又包含小写又包含特殊字符就打印出来,如果查到adbbs123这样就不打印,虽然包含了小写字母但是不包含特殊字符,这样就不打印 ”
问问鱼油帮忙解决,我也想学习学习到底是哪里的思路不对,下面是我的代码,后面也想不出了
  1. #!/usr/bin/env python                        
  2. # -*- coding:utf-8 -*-                        
  3. symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<
  4. chars = 'abcdefghijklmnopqrstuvwxyz'         
  5. nums = '0123456789'                           
  6. bigchars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'      
  7.                                              
  8. passwd = open(r'pass.txt','r')               
  9. for each in passwd.readlines():               
  10.     length = len(each)                        
  11.     if length >= 9:                           
  12.         flag_len = 1                          
  13.         #print(flag_len)                     
  14.     flag_con = 0                              
  15.         #判断密码含有特殊字符                           
  16.     for x in each:                           
  17.         if x in symbols:                     
  18.             flag_con += 1                     
  19.             #print(flag_con)                  
  20.                     #print(each.strip('\n'))  
  21.             break                             
  22.             #判断密码含有小写字母                       
  23.     for x in each:                           
  24.          if x in chars:                       
  25.             flag_con += 1                     
  26.             #print(flag_con)                  
  27.                         #print(each)         
  28.             break                             
  29.             #判断密码含有数字                        
  30.     for x in each:                           
  31.         if x in nums:                        
  32.             flag_con += 1                     
  33.             #print(flag_con)                  
  34.             break                             
  35.             #判断密码含有大写字母                       
  36.     for x in each:                           
  37.         if x in bigchars:                     
  38.             flag_con += 1                     
  39.             #print(flag_con)                  
  40.             #print(x)                        
  41.             break                             
  42.                                 #print(each)  
复制代码


pass.txt
  1. 123456
  2. 12345
  3. 5201314
  4. a123456
  5. 1234567
  6. 12345678
  7. 123456789
  8. 123qwe
  9. 12345678a
  10. a12345678
  11. Aa888888
  12. password
  13. passw0rd
  14. Passw0rd
  15. p@ssw0rd
  16. zaq!2WSX
  17. zaq_3ed
  18. 1q2w3E4R
  19. 1q2w3e4r
  20. 2wsxCDE#
  21. qwerasdf
  22. !qazXSW2
  23. @wsxZAQ1
  24. xsw@ZAQ1
  25. 1234qwer
  26. 1234qwe
  27. 123qwe!@#
  28. qwe123!@#
  29. 1qaz!QAZ
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-21 22:52:13 | 显示全部楼层
本帖最后由 ba21 于 2017-7-21 22:54 编辑

封装成一个函数不知道有多好:

  1. def passwordStren(password):
  2.     symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
  3.     chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  4.     nums = '0123456789'

  5.     passwd = password

  6.     length = len(passwd)
  7.     while (passwd.isspace() or length == 0) :
  8.         return False
  9.         #passwd = input("您输入的密码为空(或空格),请重新输入:")
  10.     if length <= 8:
  11.         flag_len = 1
  12.     elif 8 < length < 16:
  13.         flag_len = 2
  14.     else:
  15.         flag_len = 3

  16.     flag_con = 0

  17.     # 判断是否包含特殊字符
  18.     for each in passwd:
  19.         if each in symbols:
  20.             flag_con += 1
  21.             break
  22.         
  23.     # 判断是否包含字母
  24.     for each in passwd:
  25.         if each in chars:
  26.             flag_con += 1
  27.             break

  28.     # 判断是否包含数字
  29.     for each in passwd:
  30.         if each in nums:
  31.             flag_con += 1
  32.             break   

  33.     if flag_len >= 3 or flag_con >= 3 :
  34.         return True
  35.     else:
  36.         return False

  37. try:
  38.     with open(r"pass.txt","r") as f:
  39.         for each_line in f:
  40.             if passwordStren(each_line[:-1]):
  41.                 print(each_line[:-1])
  42. except OSError as reason:
  43.     print(str(reasson))
  44.    
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-22 14:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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