python-密码复杂度检测
前言
在现如今这个大数据的时代,人类无时无刻都在使用密码.
手机会设置锁屏密码,取钱会设置存款密码,微信登陆会设置登陆密码等等,手机上无数的APP都会设置密码,那么我们设置的这么多的密码怎么知道它安不安全,其实密码的设立涉及到数据加密的问题.
数据加密的基本思想是通过变换信息的表示形式来伪装需要保护的敏感信息,使非授权者不能了解被保护信息的内容。在网络安全中会涉及密码学来处理一些敏感的信息,主要包括以下几个方面:
(I)机密性(confidentiality)
(II)鉴别(authentication)
(III)报文完整性(message intergrity)
(IV)不可否认性(non-repudiation)
既然设置密码这么重要,那么我们如何来检测我们的密码是否安全呢?
下面我使用python来实现了一个密码复杂度检测的小功能:
一.用pythom来实现密码复杂度的检验
代码如下(示例):
# 密码长度判断
def pw_len(passwd):
"""
:param passwd:
:return: 是否合法, 计分
"""
passwd_len = len(passwd)
if passwd_len > 8:
return 1
else:
return 0
# 判断密码复杂度
# flake
# 函数命名、变量命名。英文。风格。
def pw_fzd(passwd1):
passwd_len = len(passwd1)
fh = 0
letters = 0
sz = 0
for i in passwd1:
i_ascii = ord(i)
if 33 <= i_ascii <= 47 or 58 <= i_ascii <= 64 or 91 <= i_ascii <= 96 or 123 <= i_ascii <= 126:
fh = 1
elif 65 <= i_ascii <= 90 or 97 <= i_ascii <= 122:
letters = 1
elif 48 <= i_ascii <= 57:
sz = 1
if fh == 1 & letters == 1 & sz == 1:
return 1
else:
return 0
# 判断密码是否有超过三位的重复
# abcdefabc
def pwd_cfd(passwd1):
passwd_len = len(passwd1)
for i in range(passwd_len - 4):
# 当前字符+3
str_1 = passwd1[i:i + 3]
str_2 = passwd1[i + 3:]
if str_1 in str_2:
return 0
return 1
def compare(passwd1, passwd2):
if passwd1 == passwd2:
return 1
else:
return 0
# 输入密码
passwd1 = input("请输入密码:")
# 确认密码
passwd2 = input("请确认密码:")
# 对比两次密码
com = compare(passwd1, passwd2)
if com == 0:
print("两次密码不一致 ")
print(f"注册失败密码安全等级为0分")
else:
# 判断密码长度
cd = pw_len(passwd1)
if cd == 0:
print("密码小于8位 ")
# 判断密码复杂度
fzd = pw_fzd(passwd1)
if fzd == 0:
print("密码复杂度不够 ")
# 判断密码重复度
cfd = pwd_cfd(passwd1)
if cfd == 0:
print("密码有超过三位的重复 ")
# 密码等级
pw_g = cd + fzd + cfd + 2
if (pw_g == 5):
print(f"注册成功,密码安全等级为{pw_g}")
else:
print(f"注册失败,密码安全等级为{pw_g}")
"""
"密码小于8位 " => 最好在函数中返回,在主程序中直接输出
"""
二.密码检测功能的测试
2.简单密码的设置等级为3
如下(示例):
3.设置复杂密码的等级为5
4.密码不一致
5.这是密码太简单了
该处使用的url网络请求的数据。
总结
1.这里设立了密码等级,这点的设计还不错,可以通过观察等级数字来判断安全性.
2.这里只是实现了密码复杂度的检测,密码还是需要自己本人输入两次正确的密码,有一定的局限性,功能过于单一.
3.这里的输入没有对密码进行隐藏,可能是为了方便第二次确认输入,但是在实际中会隐藏密码的输入.
4.密码的检测只是所有系统的一个小小功能,还有很多复杂的功能需要完善.
写的过程中有任何问题都可以评论或者私信我,有时间一定会回复的哈!
**
如果您觉得这篇文章有帮助,麻烦点个赞**再走哈,谢谢!!!****
**