鱼C论坛

 找回密码
 立即注册
查看: 4016|回复: 26

[已解决]受启发于【小甲鱼】零基础入门学习python\第14课课后作业\动动手\0写一个密码安全...

[复制链接]
发表于 2020-2-4 16:01:27 | 显示全部楼层 |阅读模式

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

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

x
#检查用户密码安全性

#检测长度
def length_examine(password):
    length = len(password)
    if length<8:
        length_e = 1
    elif 8<=length<16:
        length_e = 2
    else:
        length_e = 3
    return length_e

#检测组合
def type_examine(password):
    symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
    alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
    numbers = '1234567890'
    type_e = 0
    for each_one in password:
        if each_one in symbols:
            type_e += 1
            break
    for each_one in password:
        if each_one in alphabet:
            type_e += 1
            break
    for each_one in password:
        if each_one in numbers:
            type_e += 1
            break
    return type_e

#检测是否以字母开头
def first_examine(passworld):
    alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
    if password[0] in alphabet:
        first_e  = 1
    else :
        first_e = 0
    return first_e

#三者组合判断等级
#判断思路:
#长度等级三等,位数等级三等,首字符是否为字母两等,总共18种组合
#高:长度与位数等级都是最高等级 或者 长度与位数为一高一中并且首字符为字母
#低:长度与位数等级都是最低等级 或者 长度与位数为一低一中并且首字符不为字母
#中:除高低之外
def grade_examine(length_e,type_e,first_e):
    if length_e==3 and type_e==3:
        grade = 3
    elif length_e==3 and type_e==2 and first_e==1:
        grade = 3
    elif length_e==2 and type_e==3 and first_e==1:
        grade = 3
    elif length_e==1 and type_e==1:
        grade = 1
    elif length_e==1 and type_e==2 and first_e==0:
        grade = 1
    elif length_e==2 and type_e==1 and first_e==0:
        grade = 1
    else:
        grade = 2
    return grade

#输出
password = input('请输入您需要检查的密码组合:')
grade = grade_examine(length_examine(password),type_examine(password),first_examine(password))

while True:
    if grade==1:
        print('您的密码安全等级检测为:低')
    elif grade==2:
        print('您的密码安全等级检测为:中')
    elif grade==3:
        print('您的密码安全等级检测为:高')
        break
    print('请按以下方式提升您密码的安全级别:')
    print('1.首个字符尽量使用字母')
    print('2.尽可能包括数字、字母及特殊符号三种字符')
    print('3.使位数尽可能多(大于16位)')
    break

我觉得小甲鱼那个参考答案不太完善,就自己捣鼓了这个。
但是我觉得我这个代码太长了,有没有大佬可以帮我简化一下?感激不尽

另外,用户输入的密码可以不显示在屏幕上吗?显示在屏幕上一眼就看出来了。我想让别人输入密码,我们都看不见,而这个代码可以判断他密码的安全性。
最佳答案
2020-2-4 16:03:05
可以不显示在屏幕上。参考:https://fishc.com.cn/thread-154527-1-1.html
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-4 16:03:05 | 显示全部楼层    本楼为最佳答案   
可以不显示在屏幕上。参考:https://fishc.com.cn/thread-154527-1-1.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 16:25:10 | 显示全部楼层
zltzlt 发表于 2020-2-4 16:03
可以不显示在屏幕上。参考:https://fishc.com.cn/thread-154527-1-1.html

我想去试又发现了新问题。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 16:25:56 | 显示全部楼层
像风 发表于 2020-2-4 16:25
我想去试又发现了新问题。。。。。

已回答你的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 16:33:34 | 显示全部楼层
zltzlt 发表于 2020-2-4 16:25
已回答你的问题

感谢大佬,你好像经常都在论坛上,有和小甲鱼商量过把这个鱼C论坛做成软件吗?是不是软件维护费还有其他什么费什么费的很贵?我不懂,只是觉得做成软件会更好,什么用户粘性,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 16:34:15 | 显示全部楼层
像风 发表于 2020-2-4 16:33
感谢大佬,你好像经常都在论坛上,有和小甲鱼商量过把这个鱼C论坛做成软件吗?是不是软件维护费还有其他 ...

鱼 C 论坛有手机版哦。

https://fishc.com.cn/forum.php?mod=viewthread&tid=82138
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 16:45:42 | 显示全部楼层
zltzlt 发表于 2020-2-4 16:34
鱼 C 论坛有手机版哦。

https://fishc.com.cn/forum.php?mod=viewthread&tid=82138

我不是说论坛的不好,相反我很感激论坛和这儿的大佬,我在这儿学到了很多东西,
但是你可能理解错了,我知道鱼C论坛有手机版,说到底还是一个网页需要在别的软件里打开,我说的是软件,APP,像QQ、微信,这样子的,可以实时的收发消息。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 16:46:40 | 显示全部楼层
像风 发表于 2020-2-4 16:45
我不是说论坛的不好,相反我很感激论坛和这儿的大佬,我在这儿学到了很多东西,
但是你可能理解错了,我 ...

暂时还没有软件,小甲鱼好像也没有开发软件的意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 16:50:30 | 显示全部楼层
zltzlt 发表于 2020-2-4 16:46
暂时还没有软件,小甲鱼好像也没有开发软件的意思

好吧,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 17:06:24 | 显示全部楼层
zltzlt 发表于 2020-2-4 16:46
暂时还没有软件,小甲鱼好像也没有开发软件的意思

from getpass import getpass
pwd = getpass("请输入密码:")
print("密码是:" + pwd)
input()

这个代码保存成py文件后再打开,输入小写字母会露馅,其他的大写字母,数字,符号都不会显示出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 17:07:39 | 显示全部楼层
像风 发表于 2020-2-4 17:06
from getpass import getpass
pwd = getpass("请输入密码:")
print("密码是:" + pwd)

我这里亲测不会哦。

  1. 请输入密码:
  2. 密码是:asdasd456
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 17:13:26 | 显示全部楼层
zltzlt 发表于 2020-2-4 17:07
我这里亲测不会哦。

我这里,输入小写字母之后会显示出来,如果小写字母开头,后面的所有被输入的东西都会被显示出来。
然后敲回车,刚刚显示的就消失了,然后再敲一次回车,才会显示运行的结果
而如果输入没有小写字母,输入就不会显示,而且只用敲一次回车,就能显示运行的结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 17:14:20 | 显示全部楼层
像风 发表于 2020-2-4 17:13
我这里,输入小写字母之后会显示出来,如果小写字母开头,后面的所有被输入的东西都会被显示出来。
然后 ...

应该是 getpass 的 Bug……

你是用的 Windows 吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 17:15:51 | 显示全部楼层
对啊,win10,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 17:16:38 | 显示全部楼层
像风 发表于 2020-2-4 17:13
我这里,输入小写字母之后会显示出来,如果小写字母开头,后面的所有被输入的东西都会被显示出来。
然后 ...

个人建议把代码用代码格式显示出来,这样可以避免别人测试代码的时候因为缩进或别的代码问题消耗时间
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 17:18:44 | 显示全部楼层
weiter 发表于 2020-2-4 17:16
个人建议把代码用代码格式显示出来,这样可以避免别人测试代码的时候因为缩进或别的代码问题消耗时间

我没敲,直接复制过去的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 17:22:04 | 显示全部楼层
本帖最后由 weiter 于 2020-2-4 17:23 编辑
像风 发表于 2020-2-4 17:18
我没敲,直接复制过去的


代码格式开启方法如下:
搜狗截图20200204172101.png
搜狗截图20200204172125.png

然后复制粘贴。。。




其实也不用再敲一遍。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 17:23:41 | 显示全部楼层
像风 发表于 2020-2-4 17:18
我没敲,直接复制过去的

哦哦,我懂了,你说的是发帖那个吧,我之前不知道,刚刚也没饿懂你的意思,这会儿我找到了,
  1. from getpass import getpass
  2. pwd = getpass("请输入密码:")
  3. print("密码是:" + pwd)
  4. input()
复制代码
就像这样是吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 17:26:03 | 显示全部楼层
weiter 发表于 2020-2-4 17:22
代码格式开启方法如下:

嗯,感谢提醒,知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 17:46:59 | 显示全部楼层
像风 发表于 2020-2-4 17:23
哦哦,我懂了,你说的是发帖那个吧,我之前不知道,刚刚也没饿懂你的意思,这会儿我找到了,就像这样是吧

是的(我表达的不太好。。。)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-4 04:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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