python判断密码强度_python实现密码强度校验

本文实例为大家分享了python实现密码强度校验的具体代码,供大家参考,具体内容如下

一 校验规则

规则1 密码长度8位以上

规则2 密码需包含数字

规则3 密码需包含大小写字母

规则4 密码需包含特殊字符["+", "-", "*", "/", "_", "&", "%", ","]

规则5 校验5次不通过则强制退出

二 文件操作

每次输入的密码都会保存到文本文件中

以下是python的代码实现:

"""

作者:zhengzhihui

版本:7.0

日期:2019/7/13

功能:判断密码强度

2.0功能:循环和终止

3.0功能:将密码保存到文本中

4.0功能:读取文件,遍历文件

5.0功能:定义PasswordTool类

6.0功能:定义FileTool类

7.0功能:密码中增加大小写字母和特殊字符["+", "-", "*", "/", "_", "&", "%", ","]

"""

import time as tm

class FileTool():

"""

文件工具类

"""

def __init__(self, filepath):

self.filepath = filepath

def write_to_file(self, content):

with open(self.filepath, "a") as f:

f.write(content)

def read_from_file(self):

with open(self.filepath, "r") as f:

content = f.readlines()

return content

class PasswordTool():

"""

密码工具类

"""

def __init__(self, password):

self.password = password

self.strength_level = 0

def check_number_exist(self):

"""

判断是否含数字

"""

has_number = False

for c in self.password:

if c.isnumeric():

has_number = True

break

return has_number

def check_letter_exist(self):

"""

判断是否含字母

"""

has_upper_letter = False

has_lower_letter = False

for c in self.password:

if c.isupper():

has_upper_letter = True

elif c.islower():

has_lower_letter = True

has_both_letter = has_upper_letter and has_lower_letter

if has_both_letter:

break

return has_both_letter

def check_specialchar_exist(self):

"""

判断是否包含特殊字符

"""

has_specialchar = False

specialchar_list = ["+", "-", "*", "/", "_", "&", "%", ","]

for c in self.password:

if c in specialchar_list:

has_specialchar = True

break

return has_specialchar

def process_password(self):

"""

判断是否符合规则

"""

# 规则1:长度至少8位

if len(self.password) >= 8:

self.strength_level += 1

else:

print("密码长度至少8位")

# 规则2:必须包含数字

if self.check_number_exist():

self.strength_level += 1

else:

print("密码需要包含数字")

# 规则3:必须包含大小写字母

if self.check_letter_exist():

self.strength_level += 1

else:

print("密码需要包含大小写字母")

# 规则4:需要包含特殊字符

if self.check_specialchar_exist():

self.strength_level += 1

else:

print("密码需要包含至少一个特殊字符("+,-,*,/,_")")

def main():

"""

主函数

"""

try_times = 5

pwd_strength_dict = {0: "弱", 1: "较弱", 2: "中", 3: "强", 4: "超强"}

myfile = FileTool("password_7.0.txt")

while try_times > 0:

password = input("请输入密码: ")

mypwdtool = PasswordTool(password)

mypwdtool.process_password()

now_time = tm.strftime("%Y-%m-%d %H:%M:%S", tm.localtime())

myfile.write_to_file("日期:{} 密码:{} 强度:{}{}

".format(now_time, password,

mypwdtool.strength_level, pwd_strength_dict[mypwdtool.strength_level]))

if mypwdtool.strength_level >= 4:

print("恭喜!密码合格")

break

else:

print("密码不合格")

try_times -= 1

print()

if try_times <= 0:

print("尝试次数过多,密码设置失败!")

content = myfile.read_from_file()

print(content)

if __name__ == "__main__":

main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python字典替换值_python字典改变value值方法总结

今天这篇文章中我们来了解一下python之中的字典&#xff0c;在这文章之中我会对python字典修改进行说明,以及举例说明如何修改python字典内的值。我们开始进入文章吧。 首先我们得知道什么是修改字典 修改字典 向字典添加新内容的方法是增加新的键/值对&#xff0c;修改或删除已…

【LeetCode笔记 - 每日一题】373. 查找和最小的 K 对数字(Java、堆、优先队列)

文章目录题目描述思路 && 代码题目描述 几天没打题&#xff0c;感觉脑子都是一团浆糊。。。。 升序&#xff1a;肯定得用这条件来优化复杂度数对&#xff1a;用 int[2] 来表示 思路 && 代码 看了题解区彤哥的思路&#xff0c;代码其实就 8 行 堆初始化&…

sql 循环处理数据_图文介绍 SQL 的三种查询计划处理模型,Spark 用了其中两个

我已经在之前的 《一条 SQL 在 Apache Spark 之旅(上)》、《一条 SQL 在 Apache Spark 之旅(中)》 以及 《一条 SQL 在 Apache Spark 之旅(下)》 这三篇文章中介绍了 SQL 从用户提交到最后执行都经历了哪些过程&#xff0c;感兴趣的同学可以去这三篇文章看看。这篇文章中我们主…

html调用python_flask之模板html中调用python函数方法

一&#xff1a;html里面可以调用python写的函数 add_template_global&#xff08;调用函数的引用&#xff0c;"调用函数的名字"&#xff09; from common.libs.UrlManager importUrlManager app.add_template_global(UrlManager.buildStaticUrl,"buildStaticUrl…

python的threading是什么意思_Python中的threading模块是什么

threading提供了一个比thread模块更高层的API来提供线程的并发性。这些线程并发运行并共享内存。下面来看threading模块的具体用法&#xff1a;一、Thread的使用&#xff0c;目标函数可以实例化一个Thread对象&#xff0c;每个Thread对象代表着一个线程&#xff0c;可以通过sta…

【学习笔记】《The Linux Command Line》第一部分 1 - 11 章(shell、进程、重定向、命令等)

《The Linux Command Line》读书笔记 文章目录《The Linux Command Line》读书笔记第一章 略第二章 Shell第三章 文件系统第四章 探究OS第五章 操作文件和目录第六章 使用命令第七章 重定向第八章 Shell第九章 快捷键第十章 权限第十一章 进程第一章 略 第二章 Shell Shell: …

md5值是什么意思_详解:PER?霍林格效率值?这个最火的高阶数据究竟是什么意思?...

北京时间6月19日我们以前看球的时候&#xff0c;不关心什么高阶数据&#xff0c;顶多就是在聊天讨论的时候用得分、篮板、助攻、抢断、盖帽等数据来说事&#xff0c;但打内心更喜欢的是一场完整的比赛中的一些能够让人肾上腺素飙升的东西。后来就有人开始罗列数据&#xff0c;把…

【学习笔记】单例模式(枚举、校验锁、volatile、反射破坏)

文章目录1. 饿汉式2. 懒汉式3. DCL 双重校验锁懒汉式4. 通过反射破坏DCL & 加锁阻止5. 通过不调用 getInstance() 来破坏单例6. 通过反射来干扰信号量&#xff0c;从而破坏单例7. 通过枚举类实现单例&#xff0c;可以防止反射破坏单例学 JUC 的时候顺便摸了下单例模式&…

go 连接服务器 并存放图片_基于 Go 语言开发在线论坛(二):通过模型类与MySQL数据库交互...

在这篇教程中&#xff0c;我们将在 MySQL 中创建一个 chitchat 数据库作为论坛项目的数据库&#xff0c;然后在 Go 项目中编写模型类与之进行交互。你可以本地安装 MySQL 数据库&#xff0c;也可以基于 Docker 容器运行(后续会介绍容器化启动方法)。1、项目初始化开始之前&…

dax 筛选 包含某个字_DAX分享9:DAX中用变量来计算动态filter context中数值

文章写起来真的也挺麻烦的。坚持坚持&#xff01;加油加油&#xff01;本次分享的需求描述如下&#xff1a;在Power BI中创建一个页面&#xff0c;页面显示一个Table和两个Slicer。其中Slicer的内容也列在Table里。Table里需要一个计算值&#xff0c;这个计算值要求对Table中的…

c++怎么实现数字数组的删除数字_C/C++数据结构:栈结构解析,最简单解析,让你一遍就会...

上一章节针对于C语言最基本的数据结构链式结构体做了解析&#xff0c;不清楚的可以回顾一下。本章节主要针对于C语言的基础数据结构栈做以解析。数据结构之栈栈(stack)又名堆栈&#xff0c;它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶…

【总结记录】面向对象设计OOP三大特性(封装、继承、多态)、七大基本原则的理解(结合代码、现实实例理解)

文章目录一. 三大特征的理解&#xff08;1&#xff09;封装&#xff08;2&#xff09;继承&#xff08;3&#xff09;多态&#xff08;4&#xff09;面向对象、面向过程的对比二. 七大基本原则的理解&#xff08;1&#xff09;单一职责原则&#xff08;2&#xff09;开放封闭原…

mysql 递归查找父节点_MYSQL递归查询所有父节点

1、表结构&#xff1a;CREATE TABLE t_busi_system (ID varchar(64) NOT NULL COMMENT 标识,PARENT_ID varchar(64) DEFAULT NULL COMMENT 父id,CREATE_DATE varchar(64) DEFAULT NULL COMMENT 创建时间,CREATE_USER_ID varchar(64) DEFAULT NULL COMMENT 创建人id,CREATE_USER…

arcmap shp导出cad无反应_如何使用ArcMap将Excel数据转换为shp数据

1. 概述对ArcMap而言&#xff0c;除了shapefile等数据源&#xff0c;还可以将包含地理位置的表格数据以 XY 坐标的形式添加到地图中&#xff0c;比如Excel格式的数据&#xff0c;如果包含有坐标数据在里面&#xff0c;就可以通过导入XY数据的方式将Excel数据导入&#xff0c;最…

【总结记录】《MySQL必知必会》读后笔记,结合 leetcode 例题理解

文章目录一. 《MySQL知会》读后笔记1. 零散的前文知识2. 连接数据库3. 检索数据&#xff08;重点开始了&#xff09;4. 排序、过滤数据5. 通配符、正则表达式6. 汇总数据7. 分组数据&#xff08;1&#xff09;GROUP BY&#xff08;数据分组&#xff09;&#xff08;2&#xff0…

新松机器人发行价_知识创造财富,“机器人第一股”背后的院士是怎样炼成的?...

‍*本文原创首发于微信公众号“德先生”&#xff0c;未经授权转载必究。机器人的研发、制造、应用&#xff0c;是衡量一个国家科技创新和高端制造业水平的重要标志。上世纪70年代&#xff0c;我国机器人刚刚起步&#xff0c;如今&#xff0c;中国自主品牌机器人依靠技术创新&am…

如何使用CNN进行物体识别和分类_RCNN物体识别

R-CNN&#xff0c;图片识别目标检测(Object Detection)是图像分类的延伸&#xff0c;除了分类任务&#xff0c;还要给定多个检测目标的坐标位置。R-CNN是最早基于CNN的目标检测方法&#xff0c;然后基于这条路线依次演进出了SPPnet,Fast R-CNN和Faster R-CNN&#xff0c;然后到…

python如何不跳行打印_python怎么不换行打印

Python2.7中&#xff0c;执行完print后&#xff0c;会自动换行&#xff0c;如下代码会打印&#xff1a;abc\n123\n(其中\n代表换行)print (abc)print (123)如何实现不换行打印字符呢&#xff0c;下面介绍Python2.7中 实现不换行打印字符的3种简单方法&#xff1a;1.在print函数…

【LeetCode 总结】Leetcode 题型分类总结、索引与常用接口函数

文章目录零. Java 常用接口函数一. 动态规划二. 链表三. 哈希表四. 滑动窗口五. 字符串六. DFS、BFS七. 二分法八. 二叉树九. 偏数学、过目不忘 and 原地算法等十. 每日一题前言&#xff1a; 是时候开一个对于我的 LeetCode 专栏的总结索引了 虽然说大概只刷了150道左右&#…

nfs服务器_Kubernetes集群下部署NFS持久存储

NFS是网络文件系统Network File System的缩写&#xff0c;NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地的文件系统中&#xff0c;而在本地的系统中来看&#xff0c;那个远程主机的目录就好像是自己的一个磁盘分区一样。kubernetes使用NFS共享存储有两种方式&…