【Python打卡2019】20190430之判断密码强弱

0.目标描述
  • 我们在使用各类网站或系统的时候,经常会遇到系统要求你设置的密码符合一定的要求才能通过;
  • 有时候还会根据密码的强度给你标上【强】【中等】【弱】等等;
  • 实际上,密码的强度指的是破解的理论平均次数;
  • 今天我就用Python实现一下这个判断的过程。
1.密码判断指标设定
  • 首先,密码长度要介于8-16位之间;
  • 其次,密码中需要包含字母
  • 此外,密码中需要包含数字
  • 最后,密码尝试修改次数不大于3次
2.实现与结果

注释很详细,应该很容易看懂。

"""
    实现密码强度的判断
    输入:密码字符串
    输出:密码强度
    过程:若不符合要求重复修改
    要求为:
 - 首先,密码长度要介于**8-16**位之间;
 - 其次,密码中需要**包含字母**;
 - 此外,密码中需要**包含数字**;
 - 最后,密码尝试修改次数不大于**3次**。
"""


# 给密码评级,符合一个要求即加一颗星
def rank_password(password):
    pwd_rank = 0
    if has_number(password):  # 判断密码中是否存在数字,存在则评价加1
        pwd_rank += 1

    if has_letter(password):  # 判断密码中是否存在字母,存在则评级加1
        pwd_rank += 1

    if 8 <= len(password) <= 16:  # 如果密码长度符合要求则评级加1
        pwd_rank += 1

    if pwd_rank == 3:
        print("密码强度:强(☆☆☆)")
    elif pwd_rank == 2:
        print("密码强度:中等(☆☆)")
    elif pwd_rank == 1:
        print("密码强度:弱(☆)")
        print("密码设置不成功!")  # 如果仅有一条标准符合,则返回失败
        return False
    print("密码设置成功!")
    return True


# 判断密码当中是否存在数字
def has_number(pwd):
    for c in pwd:
        if c.isnumeric():
            return True
    return False


# 判断密码当中是否存在字母
def has_letter(pwd):
    for c in pwd:
        if c.isalpha():
            return True
    return False


# 接收用户输入,并传入方法当中
def main():
    setting_times = 1
    while setting_times <= 3:
        pwd = input("请输入密码:")
        if rank_password(pwd):  # 如果密码设置成功,则跳出循环
            break
        else:
            setting_times += 1
    if setting_times > 3:  # 如果密码设置次数到达上限,则输出提示
        print("尝试次数超过上限(3次)!密码设置失败!")


if __name__ == '__main__':
    main()
Y:\Python\Anaconda\python.exe Y:/PythonWorkspace/PasswordReliablity/PasswordRank.py
请输入密码:123
密码强度:弱(☆)
密码设置不成功!
请输入密码:123yh
密码强度:中等(☆☆)
密码设置成功!

Process finished with exit code 0
Y:\Python\Anaconda\python.exe Y:/PythonWorkspace/PasswordReliablity/PasswordRank.py
请输入密码:yh12345678
密码强度:强(☆☆☆)
密码设置成功!

Process finished with exit code 0
Y:\Python\Anaconda\python.exe Y:/PythonWorkspace/PasswordReliablity/PasswordRank.py
请输入密码:1
密码强度:弱(☆)
密码设置不成功!
请输入密码:11
密码强度:弱(☆)
密码设置不成功!
请输入密码:11
密码强度:弱(☆)
密码设置不成功!
尝试次数超过上限(3次)!密码设置失败!

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值