Python强口令检测

Python编程快速上手——让繁琐工作自动化 第2版》

7.18 实践项目
7.18.2 强口令检测

以下为书中的项目介绍

写一个函数,使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:长短不少于8个字符,同时包含大写和小写字符,至少有一位数字。你可能需要多个正则表达式来测试该字符串,以保证它的强度。

将以上项目介绍分别发给豆包AI和deepseek V3模型,用一个python脚本编写,以下为得到的回答(均为一遍作答)

豆包AI回答:
import re

def is_strong_password(password):
    # 检查长度是否不少于 8 个字符
    length_regex = re.compile(r'.{8,}')
    if not length_regex.search(password):
        return False

    # 检查是否包含大写字符
    upper_regex = re.compile(r'[A-Z]')
    if not upper_regex.search(password):
        return False

    # 检查是否包含小写字符
    lower_regex = re.compile(r'[a-z]')
    if not lower_regex.search(password):
        return False

    # 检查是否至少有一位数字
    digit_regex = re.compile(r'\d')
    if not digit_regex.search(password):
        return False

    return True

# 测试函数
password = "Abc12345"
if is_strong_password(password):
    print("这是一个强口令。")
else:
    print("这不是一个强口令。")

运行结果:

基本功能可以实现

修改password = "Abc12345"运行

这是一个强口令。

修改password = "Abcddddd"运行

这不是一个强口令。
deepseek V3模型回答:
import re

def is_strong_password(password):
    """
    检测密码是否为强口令
    """
    # 检查长度是否不少于8个字符
    if len(password) < 8:
        return False

    # 检查是否包含至少一个大写字母
    if not re.search(r'[A-Z]', password):
        return False

    # 检查是否包含至少一个小写字母
    if not re.search(r'[a-z]', password):
        return False

    # 检查是否包含至少一个数字
    if not re.search(r'[0-9]', password):
        return False

    # 如果所有条件都满足,返回True
    return True

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

    # 检测密码强度
    if is_strong_password(password):
        print("密码是强口令。")
    else:
        print("密码不是强口令。请确保密码满足以下条件:")
        print("- 长度不少于8个字符")
        print("- 包含至少一个大写字母和一个小写字母")
        print("- 包含至少一个数字")

if __name__ == "__main__":
    main()

运行结果:

基本功能可以实现

请输入密码: Abc12345
密码是强口令。
请输入密码: Abcddddd
密码不是强口令。请确保密码满足以下条件:
- 长度不少于8个字符
- 包含至少一个大写字母和一个小写字母
- 包含至少一个数字
总结:

本项目中deepseek V3和豆包都可以给出合理的代码,但在判断长度方面,deepseek使用"if len(password) < 8:",豆包使用正则表达式"length_regex = re.compile(r'.{8,}')",从性能角度看,使用 len(password)<8 代替正则表达式检查长度更高效,所以此项目建议采用deepseek的回答作为参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值