鱼C论坛

 找回密码
 立即注册
查看: 2726|回复: 7

判断密码安全程度,鱼c作业题,怎么判断if else while 谁和谁对其呀

[复制链接]
发表于 2020-10-20 14:28:29 | 显示全部楼层 |阅读模式

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

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

x
symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
passwd = input('请输入需要检查的密码组合:')
length = len(passwd)
while (passwd.isspace() or length == 0):
    passwd = input("您输入的密码为空(或空格),请重新输入:")
    if length <= 8:
        flag_len =1
    elif 8 < length < 16:
            flag_len = 2
    else:
        flag_len = 3
        flag_con = 0
        for each in passwd:
            if each in symbols:
                flag_con += 1
                break
        for each in passwd:
            if each in chars:
                flag_con += 1
                break
        for each in passwd:
            if each in nums:
                flag_con += 1
                break
        while 1 :
            print("您的密码安全级别评定为:", end='')
            if flag_len == 1 or flag_con == 1 :
                print("低")
            elif flag_len == 2 or flag_con == 2 :
                    print("中")
            else:
                print("高")
                print("请继续保持")
                break
            print("请按以下方式提升您的密码安全级别:\n\\t1. 密码必须由数字、字母及特殊字符三种组合\n\\t2. 密码只能由字母开头\n\\t3. 密码长度不能低于16位'")
            break
这程序我晕了谁能给我改改错,再给我讲讲不胜感激
0. 请写一个密码安全性检查的脚本代码:check.py
# 密码安全性检查代码
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-20 15:22:18 | 显示全部楼层
看他密码里面出现的特殊符号的长度和频率,进行判断
对不同字符加权,比如!.,;()*这些符号的权重大一点,123bc这种权重小一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 15:23:18 | 显示全部楼层
对密码的各个字符加权,根据权重求和,得到所谓的密码安全程度
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 19:48:11 | 显示全部楼层
本帖最后由 笨鸟学飞 于 2020-10-20 19:50 编辑

symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''     #定义特殊符号字符串
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'  #定义所有字母字符串
nums = '0123456789'  #定义所有数字字符串
passwd = input('请输入需要检查的密码组合:')  #获取用户输入的密码(字符串型),并赋值给变量passwd
length = len(passwd)     #获取用户输入密码的长度(也就是密码有几位),并赋值给变量length
while (passwd.isspace() or length == 0):          #密码中只有空格,或者长度等于0的时候,则进入循环,否则直接跳转到while循环代码段之后执行,然而并没有语句了,注意看缩进,while循环代码段在(while)和(与 while缩进齐平的代码语句)之间。。。例如
whlie True:  #为真进入循环,否则跳转到print并开始执行(注意看缩进对齐)
    ****   
    ****
print(****)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-22 15:07:15 | 显示全部楼层
我知道程序每一行的意思,我现在分不清缩进问题,不知道谁应该和While对齐,然后导致程序没有正常执行,能帮我改下正确的对齐程序吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 15:23:33 | 显示全部楼层
沈工大小o 发表于 2020-10-22 15:07
我知道程序每一行的意思,我现在分不清缩进问题,不知道谁应该和While对齐,然后导致程序没有正常执行,能 ...
  1. symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
  2. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3. nums = '0123456789'
  4. passwd = input('请输入需要检查的密码组合:')
  5. length = len(passwd)
  6. while (passwd.isspace() or length == 0):
  7.     passwd = input("您输入的密码为空(或空格),请重新输入:")
  8. else:
  9.     if length <= 8:
  10.         flag_len = flag_con=1
  11.     elif 8 < length < 16:
  12.         flag_len = flag_con=2
  13.     else:
  14.         flag_len = 3
  15.         flag_con = 0
  16.         for each in passwd:
  17.             if each in symbols:
  18.                 flag_con += 1
  19.                 break
  20.         for each in passwd:
  21.             if each in chars:
  22.                 flag_con += 1
  23.                 break
  24.         for each in passwd:
  25.             if each in nums:
  26.                 flag_con += 1
  27.                 break
  28. while 1:
  29.     print("您的密码安全级别评定为:", end='')
  30.     if flag_len == 1 or flag_con == 1:
  31.         print("低")
  32.     elif flag_len == 2 or flag_con == 2:
  33.         print("中")
  34.     else:
  35.         print("高")
  36.         print("请继续保持")
  37.         break
  38.     print("请按以下方式提升您的密码安全级别:\n\\t1. 密码必须由数字、字母及特殊字符三种组合\n\\t2. 密码只能由字母开头\n\\t3. 密码长度不能低于16位'")
  39.     break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-22 15:48:44 | 显示全部楼层
沈工大小o 发表于 2020-10-22 15:07
我知道程序每一行的意思,我现在分不清缩进问题,不知道谁应该和While对齐,然后导致程序没有正常执行,能 ...

symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
passwd = input('请输入需要检查的密码组合:')
length = len(passwd)
flag_len=0
flag_con=0
while (passwd.isspace() or length == 0):
    passwd = input("您输入的密码为空(或空格),请重新输入:")
    if length <= 8:
        flag_len =1
    elif 8 < length < 16:
        flag_len = 2
    else:
        flag_len = 3
        flag_con = 0
    for each in passwd:
        if each in symbols:
            flag_con += 1
            break
    for each in passwd:
        if each in chars:
            flag_con += 1
            break
    for each in passwd:
        if each in nums:
            flag_con += 1
            break
while 1 :
    print("您的密码安全级别评定为:", end='')
    if flag_len == 1 or flag_con == 1 :
        print("低")
    elif flag_len == 2 or flag_con == 2 :
        print("中")
    else:
        print("高")
        print("请继续保持")
        break
    print("请按以下方式提升您的密码安全级别:\n\\t1. 密码必须由数字、字母及特殊字符三种组合\n\\t2. 密码只能由字母开头\n\\t3. 密码长度不能低于16位'")
    break
经过我的修改小甲鱼的程序终于跑起来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 15:55:13 | 显示全部楼层
沈工大小o 发表于 2020-10-22 15:48
symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN ...

你确定,这样跑起来的是对的?

按这个代码运行:
请输入需要检查的密码组合:1
您的密码安全级别评定为:高
请继续保持
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 14:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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