使用Python检查密码安全程度

本文主要演示几种内置用法的用法和代码优化技巧,所以没有使用正则表达式。

import string

def check(pwd):

#密码必须至少包含6个字符

if not isinstance(pwd, str) or len(pwd)<6:

return 'not suitable for password'

#密码强度等级与包含字符种类的对应关系

d = {1:'weak', 2:'below middle', 3:'above middle', 4:'strong'}

#分别用来标记pwd是否含有数字、小写字母、大写字母和指定的标点符号

r = [False] * 4

for ch in pwd:

#是否包含数字

if not r[0] and ch in string.digits:

r[0] = True

#是否包含小写字母

elif not r[1] and ch in string.ascii_lowercase:

r[1] = True

#是否包含大写字母

elif not r[2] and ch in string.ascii_uppercase:

r[2] = True

#是否包含指定的标点符号

elif not r[3] and ch in ',.!;?<>':

r[3] = True

#统计包含的字符种类,返回密码强度

return d.get(r.count(True), 'error')

print(check('a2Cde,'))

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2016-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏帮你学MatLab

《Experiment with MATLAB》读书笔记(一)

读书笔记(一) 这是第一部分——迭代 将代码复制到m文件中即可运行 % 迭代是计算的关键 % % 上键:调用先前的命令 % %下面这个“双%”表示一个se...

2938
来自专栏ShaoYL

Protocol(协议)

4387
来自专栏蛋未明的专栏

json_decode在php中的一些无法解析的字符串

2185
来自专栏电光石火

获取URL地址中的GET参数

/*-----------------实现1--------------------*/ function getPar(par){ //获取当前URL...

2129
来自专栏菩提树下的杨过

利用ganymed-ssh2远程执行其它Linux机器上的shell命令

实际应用中,有时候需要从web管理界面上,远程去启动其它linux主机上的程序,利用ssh协议可以方便的满足这一需求。事实上hadoop架构中,从nn上启动dn...

28410
来自专栏数据结构与算法

7617:输出前k大的数

7617:输出前k大的数 查看 提交 统计 提问 总时间限制:10000ms单个测试点时间限制:1000ms内存限制:65536kB描述 给定一个数组,统计前k...

3905
来自专栏JavaQ

高并发编程-volatile详解

在介绍volatile之前,先简单了解一下Java内存模型。在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏...

953
来自专栏北京马哥教育

前端数据如何被Django接受?学会这几个方法就可以了

? 作者:点点寒彬 来源: http://blog.csdn.net/wyb199026/article/details/51908450 背景 ? 测...

2787
来自专栏desperate633

第7课 创建计算字段拼接字段执行简单的算术运算

什么是计算字段? 就是直接从数据库中检索出转换,计算或者格式化的数据,而不是检索出数据之后,再在客户端应用程序中重新格式化。

732
来自专栏nummy

__import__详解

当使用import导入Python模块的时候,默认调用的是__import__()函数。直接使用该函数的情况很少见,一般用于动态加载模块。

862

扫码关注云+社区

领取腾讯云代金券