检测密码安全强度 和 凯撒加密

news2025/7/19 21:01:46

检测密码安全强度

按照含有数字,小写字母,大写字母,指定标点符号的种类,把安全强度分为强密码,中高,中低,弱密码.
编写程序,输入一个字符串,输出该字符串作为密码时的安全强度

from string import digits, ascii_lowercase, ascii_uppercase


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'
    }
    # 数字, 小写字母, 大写字母和指定的标点符号
    r = [False] * 4
    for ch in pwd:
        # 是否包含数字
        if not r[0] and ch in digits:
            r[0] = True
        # 是否包含小写字母
        elif not r[1] and ch in ascii_lowercase:
            r[1] = True
        # 是否包含大写字母
        elif not r[2] and ch in ascii_uppercase:
            r[2] = True
        # 是否包含指定的标点符号
        elif not r[3] and ch in ',.!;?<>':
            r[3] = True
    # 统计包含的字符种类,返回密码强度
    return d.get(r.count(True), 'error')

凯撒加密

把字符串中每个英文字母替换成该字母在字母表中后面第k个字母,如果后面k个字符超过字母表的范围,则把字母表首尾相接,也就是字母Z的下一个字母是A,字母z下一个字母是a.

要求大写字母加密后仍为大写字母,小写字母加密后仍为小写字母.
编写程序,输入一个字符串作为待加密的明文,然后输入一个整数作为凯撒加密的密钥,最后输出该字符串使用该密钥加密后的结果

import string


def kaisa(s, k):
    lower = string.ascii_lowercase
    upper = string.ascii_uppercase
    before = string.ascii_letters
    after = lower[k:] + lower[:k] + upper[k:] + upper[:k]
    table = ''.maketrans(before, after)
    return s.translate(table)


s = input('请输入一个字符串:')
k = int(input('请输入一个整数秘钥:'))
print(kaisa(s, k))
  • 字符串对象的maketrans()方法用来生成字符映射表.若输入2个参数,则二者必须为长度相等且一一对应的字符串,该方法输出一个字典, 其中 第一个参数 中每个字符将被映射为 第二个参数 中相同位置的字符
  • 而translate()方法用来根据映射表中定义的对应关系转换字符串并替换其中的字符
  • 可以使用这两个方法的组合同时处理多个字符
x = 'ac'
y = 'hi'
print(''.maketrans(x, y))

在这里插入图片描述
这些数字是字母对应的Unicode 码位序号

table = ''.maketrans('ac', 'hi')
s = 'abcdaecf'
print(s.translate(table))

在这里插入图片描述

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

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

相关文章

【前端学习】—使用多种方式实现数组去重(六)

【前端学习】—使用多种方式实现数组去重(六) 一、数组常用的几个方法 //[1,2,3,4,2,1]//[{name:"caicai",age:"10"},{name:"zhangsan",age:"20"}]const array=[

jmeter监听每秒点击数(Hits per Second)

jmeter监听每秒点击数&#xff08;Hits per Second&#xff09; 下载插件添加监听器执行压测&#xff0c;监听结果 下载插件 点击选项&#xff0c;点击Plugins Manager (has upgrades)&#xff0c;点击Available Plugins&#xff0c;搜索5 Additional Graphs安装。 添加监听…

C++新经典 | C++ 查漏补缺(内存)

目录 一、new和delete 1.new类对象时&#xff0c;括号问题 2.new做了什么事 3.delete做了什么事 4.new与malloc的区别 5.delete与free的区别 二、分配及释放内存 三、重载operator new和operator delete操作符 1.重载类中的operator new和operator delete操作符 &…

通信系统中ZF,ML,MRC以及MMSE四种信号检测算法误码率matlab对比仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、ZF&#xff08;零迫&#xff09;算法 4.2、ML&#xff08;最大似然&#xff09;算法 4.3、MRC&#xff08;最大比合并&#xff09;算法 4.4、MMSE&#xff08;最小均方误差&#xff…

2024杭州人工智能展会(世亚智博会)一场人工智能领域的视觉盛宴

2024年&#xff0c;一场规模空前的人工智能盛会将在杭州国际博览中心盛大开幕。这场名为“2024杭州国际人工智能展览会&#xff08;简称&#xff1a;世亚智博会&#xff09;”的展会活动&#xff0c;将于4月份在杭州国际博览中心隆重举行&#xff0c;届时将迎来一场人工智能领域…

网络安全必备常识:Web应用防火墙是什么?

如今&#xff0c;很多企业都将应用架设在Web平台上&#xff0c;为用户提供更为方便、快捷的服务支持&#xff0c;例如网上银行、网上购物等。与此同时&#xff0c;应用程序组合变得前所未有的复杂和多样化&#xff0c;这为攻击者发动攻击开辟了大量媒介&#xff0c;Web应用防火…

【C++ 学习 ㉘】- 详解 C++11 的列表初始化

目录 一、C11 简介 二、列表初始化 2.1 - 统一初始化 2.2 - 列表初始化的使用细节 2.2.1 - 聚合类型的定义 2.2.2 - 注意事项 2.3 - initializer_list 2.3.1 - 基本使用 2.3.2 - 源码剖析 一、C11 简介 1998 年&#xff0c;C 标准委员会发布了第一版 C 标准&#xff0…

使用new创建动态结构

在运行时创建数组优于在编译时创建数组&#xff0c;对于结构&#xff08;同一个结构可以存储多种类型的数据。&#xff09;也是如此。需要在程序运行时为结构分配所需的空间&#xff0c;这也可以使用new运算符来完成。通过使用new&#xff0c;可以创建动态结构。同样&#xff0…

【广州华锐互动】利用AR进行野外地质调查学习,培养学生实践能力

在科技发展的驱动下&#xff0c;AR&#xff08;增强现实&#xff09;技术已经在许多领域中找到了应用&#xff0c;包括医疗、教育、建筑和娱乐等。然而&#xff0c;有一个领域尚未充分利用AR技术的潜力&#xff0c;那就是野外地质调查。通过将AR技术引入到这个传统上需要大量人…

免费:实时 AI 编程助手 Amazon CodeWhisperer

点 &#xff0c;一起程序员弯道超车之路 现已正式推出实时 AI 编程助手 Amazon CodeWhisperer&#xff0c;包括 CodeWhisperer 个人套餐&#xff0c;所有开发人员均可免费使用。最初于去年推出的预览版 CodeWhisperer 让开发人员能够保持专注、高效&#xff0c;帮助他们快速、安…

rabbitMq (2)

RabbitMQ 消息应答与发布 文章目录 1. 消息应答1.2 自动应答1.2 手动应答1.3 代码案例 2. RabbitMQ 持久化2.1 队列持久化2.2 消息持久化 3. 不公平分发4. 预取值分发5. 发布确认5.1 发布确认逻辑5.2 开启发布确认的方法5.3 单个确认发布5.4 批量确认发布5.5 异步确认5.5.1 处理…

【milkv】更新rndis驱动

问题 由于windows升级到了11&#xff0c;导致rndis驱动无法识别到。 解决 打开设备管理器&#xff0c;查看网络适配器&#xff0c;没有更新会显示黄色的图标。 右击选择更新驱动

机器学习基础之《回归与聚类算法(3)—线性回归优化:岭回归》

一、什么是岭回归 其实岭回归就是带L2正则化的线性回归 岭回归&#xff0c;其实也是一种线性回归。只不过在算法建立回归方程时候&#xff0c;加上L2正则化的限制&#xff0c;从而达到解决过拟合的效果 二、API 1、sklearn.linear_model.Ridge(alpha1.0, fit_interceptTrue…

软件测试中bug修正后测试就结束了吗?

一般来说&#xff0c;当 Bug 跟踪系统上所有的 bug 都被关闭了以后&#xff0c;你会感到如释重负&#xff0c;终于可以松一口气了。 当项目成功交付后&#xff0c;你是否感到大脑进入了疲惫期&#xff0c;上网&#xff0c;聊天&#xff0c;写自己感兴趣的小程序&#xff0c;项…

SRS Config 一 基础配置

Config srs 流媒体服务配置官方文档已经很详细了&#xff0c;本文仅记录部分配置过程 srs.conf同级目录下 新建 self.conf 仿照srs.conf 添加基础配置 1 rtmp RTMP是直播的事实标准&#xff0c;这么多年以来一直是使用最广泛的直播协议。 然而Adobe公司没有一直更新RTMP协…

“1688按图搜索商品:拍立淘API,轻松实现高效购物!“

1688按图搜索商品&#xff08;拍立淘&#xff09;API的步骤大致如下&#xff1a; 需要先开放平台注册开发者账号。为每个淘宝应用注册一个应用程序键&#xff0c;登陆密钥。下载1688API的SDK并掌握基本的API基础知识和调用。利用SDK接口和对象&#xff0c;传入AppKey或者必要的…

VScode折叠代码

问题现状 代码看的我很烦&#xff0c; 有大段大段好像没有逻辑意义的部分&#xff0c;像大量的print语句&#xff0c; 想能不能折叠起来 在设置里面找 搜索Folding&#xff0c;找到Show Folding Controls&#xff0c; 换成always吧&#xff0c;一般默认是mouseover&#x…

21-数据结构-内部排序-交换排序

简介&#xff1a;主要根据两个数据进行比较从而交换彼此位置&#xff0c;以此类推&#xff0c;交换完全部。主要有冒泡和快速排序两种。 目录 一、冒泡排序 1.1简介&#xff1a; 1.2代码&#xff1a; 二、快速排序 1.1简介&#xff1a; 1.2代码&#xff1a; 一、冒泡排序…

10.17七段数码管单个多个(部分)

单个数码管的实现 第一种方式 一端并接称为位码&#xff1b;一端分别接收电平信号以控制灯的亮灭&#xff0c;称为段码 8421BCD码转七段数码管段码是将BCD码表示的十进制数转换成七段LED数码管的7个驱动段码&#xff0c; 段码就是LED灯的信号 a为1表示没用到a&#xff0c;a为…

文心一言 VS 讯飞星火 VS chatgpt (115)-- 算法导论10.2 8题

八、用go语言&#xff0c;说明如何在每个元素仅使用一个指针 x.np(而不是通常的两个指针 next和prev)的下实现双向链表。假设所有指针的值都可视为 k 位的整型数&#xff0c;且定义x.npx.next XOR x.prev&#xff0c;即x.nert和x.prev 的 k 位异或。(NIL 的值用0表示。)注意要说…