python全项目实战系列(十二):加密与解密小程序
off999 2024-12-25 14:48 43 浏览 0 评论
本系列旨在通过一系列由浅入深的python实战代码或项目,使普通人也能感受到编程的乐趣,编程能够在平时的工作生活上有所帮助。欢迎查看系列的开篇词和前面文章。
概述
密码学(Cryptology)是一种用来混淆的技术,它希望将正常的、可识别的信息转变为无法识别的信息。
很长一段历史时期, 密码学的核心是加密体制, 在此阶段, 研究信息的保密和复原保密信息以获取其真实内容的学科称为密码学 (cryptology).
它包括
密码编码学(cryptography) 研究对信息进行编码, 实现隐蔽信息的一门学科.
密码分析学(cryptanalysis) 研究复原保密信息或求解加密算法与密钥的学科.
在邮政系统和信息的电气化传输发展以前, 通信主要由秘密信使来完成. 然而信使有被抓获和叛变的可能, 所以, 人们希望他们的通信不能为那些没有获得他们所提供的特殊的解密信息的敌人所理解. 达到这一目的的技术就构成了密码编码学.
因此, 密码编码学是一门使传递的信息只为预定的接收者所理解而不向他人泄露的学科. 这里所说的信息包括文字、语音、图像和数据等一切可用于人们进行思想交流的工具.
密码的出现迫使人们使用这样或那样的方法去揭示使用了密码技术的保密通信的秘密. 当然, 这一过程是在缺乏隐蔽此消息的密码技术的任何细节知识的情况下进行的. 达到这一目的的过程就构成了密码分析学, 有时也称为破译或攻击. 因此, 密码分析学是研究如何获得使用了密码技术的保密通信的真实内容的一门学科. 密码方法的使用和研究起源颇早.
凯撒密码
本文将使用python来实现凯撒密码的加密和解密过程。
凯撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
代码实现过程
"""
凯撒密码通过将字母移动一个来加密字母
凯撒密码通过将字母替换为密钥编号来加密字母。例如,密钥为 2 表示字母 A 被加密为 C,
字母 B 被加密为 D,等等Caesar cipher 通过将字母替换为密钥编号来加密字母。
例如,密钥为 2 表示字母 A 被加密为 C,字母 B 被加密为 D,等等
"""
# 可以加密/解密的每个可能的符号:
# 您也可以添加数字和标点符号来加密这些符号.
SYMBOLS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
print('凯撒密码通过将字母的移动来加密/解密字母')
# 让用户在加密或解密时输入:
while True: # 一直询问直到用户输入 e 或 d.
print('你想要 加密(e)ncrypt 还是 解密(d)ecrypt?')
response = input('> ').lower()
if response.startswith('e'):
mode = 'encrypt'
break
elif response.startswith('d'):
mode = 'decrypt'
break
print('请输入字母 e 或 d.')
# 让用户输入要使用的密钥:
while True: # 一直询问,直到用户输入有效的密钥.
maxKey = len(SYMBOLS) - 1
print('请输入要使用的密钥(0到{})'.format(maxKey))
response = input('> ').upper()
if not response.isdecimal():
continue
if 0 <= int(response) < len(SYMBOLS):
key = int(response)
break
# 让用户输入消息进行加密/解密:
print('输入消息到{}.'.format(mode))
message = input('> ')
# 凯撒密码只适用于大写字母:
message = message.upper()
# 存储消息的加密/解密形式:
translated = ''
# 加密/解密消息中的每个符号:
for symbol in message:
if symbol in SYMBOLS:
# 获取该符号的加密(或解密)数字.
num = SYMBOLS.find(symbol) # 获取符号的编号.
if mode == 'encrypt':
num = num + key
elif mode == 'decrypt':
num = num - key
# 如果 num 大于 SYMBOLS 的长度或小于 0,则处理回绕:
if num >= len(SYMBOLS):
num = num - len(SYMBOLS)
elif num < 0:
num = num + len(SYMBOLS)
# 添加加密/解密数字的符号来翻译:
translated = translated + SYMBOLS[num]
else:
# 只需添加符号而不加密/解密
translated = translated + symbol
# 在屏幕上显示加密/解密的字符串:
print("加密或解密的结果如下:")
print(translated)
加密测试,将The Caesar cipher is a shift cipher that uses addition and subtraction进行偏移量为3的加密
凯撒密码通过将字母移动一个来加密字母
你想要 加密(e)ncrypt 还是 解密(d)ecrypt?
> e
请输入要使用的密钥(0到25)
> 3
输入消息到encrypt.
> The Caesar cipher is a shift cipher that uses addition and subtraction
WKH FDHVDU FLSKHU LV D VKLIW FLSKHU WKDW XVHV DGGLWLRQ DQG VXEWUDFWLRQ
完整的 encrypted 文本复制到剪贴板。
解密测试,将上文加密的密文解密为正常文字
凯撒密码通过将字母移动一个来加密字母
你想要 加密(e)ncrypt 还是 解密(d)ecrypt?
> d
请输入要使用的密钥(0到25)
> 3
输入消息到decrypt.
> WKH FDHVDU FLSKHU LV D VKLIW FLSKHU WKDW XVHV DGGLWLRQ DQG VXEWUDFWLRQ
THE CAESAR CIPHER IS A SHIFT CIPHER THAT USES ADDITION AND SUBTRACTION
完整的 decrypted 文本复制到剪贴板。
相关推荐
- 无敌系统流小说(无敌系统流的小说)
-
《嫡女之花开富贵》作者:伊人睽睽简介祖父是镇国将军,贵不可言;外公是帝师,才名满天下;父母亲琴瑟和鸣,恩爱无双,无妾室插足;穿越为书香门第的嫡小姐,且无任何庶兄妹,慕兰音认为,她这一生,必将佳期如梦...
-
- 键盘上windows键是哪个键(电脑键盘上windows键是哪个)
-
一、台式机键盘。Windows键,简称“Winkey”或“Win键”,是在计算机键盘左下角Ctrl和Alt键之间的按键,台式机全尺寸键盘的主键盘区左下角和右下角各有一个,图案是MicrosoftWindows的视窗徽标。二、笔记...
-
2026-01-13 11:51 off999
-
- 桌面图标设置在哪打开(桌面图标从哪里调出)
-
1、首先来到电脑桌面,此时桌面没有任何图标,如下图所示。2、我们先右键单击任务栏,会出现工具栏,这时我们在下拉的选项里选择“快速启动”按钮。3、单击快速启动按钮后会出现如图所示情况,这时在电脑屏幕的左下方会显示很多快捷按钮,一般情况下单击快...
-
2026-01-13 10:51 off999
- windows如何进入启动项(怎么进入启动选项)
-
方法步骤如下:1.点击应用在Windows设置界面点击应用选项进入。2.选择启动在左侧分类中选择启动选项。3.点击开关点击软件后方的开关即可启动或关闭开机启动项。1、在Window的文件资...
- win11下载安装
-
一、允许安装软件1、首先点击左下角的开始按键,然后点击“settings”进入设置。2、然后点击设置中的“应用”选项。3、在点击左侧任务栏中的“应用和功能”。4、点击下拉栏,然后选择其中的“任何来源”...
- win7支持的最高配置(win7支持的最高配置是多少)
-
答案是支持win7的最高配置应该是i99900k加b365主板。 不过这套配置市面上价格偏高。这种机器比同等酷睿13代处理器的价格还要高至少一千元以上。而且就性能而言要超过i99900...
- 指令引用的内存不能为read(指令引用的0x0000000内存.该内存不能为read)
-
出现“指令引用内存不能为read”的错误可能有多种原因,包括软件冲突、驱动问题、内存质量问题等。以下是一些可能的解决方案:1.检查是否有软件冲突:尝试关闭可能冲突的软件,例如杀毒软件、优化软件等。2...
- hp1010打印机驱动程序(hp deskjet1010打印机驱动)
-
1.把光盘到电脑里然后打开光盘找到“setup.exe”双击运行。2.这里点击“不用了,谢谢,我喜欢CD安装”;下载的驱动也点这个。3.到这个一步有6个软件需要安装,不用点选直接下一步即可。4.同意服...
- 电脑黑屏怎么关机(电脑黑屏怎么关机不会伤硬盘)
-
开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复,还不行按F8进入安全模式还原一下系统或重装系统(如果开机没反应,放一下电,重新插拔一下硬件,如果总是开不了机就检修一下去)。如果是...
- 应用程序无法启动0xc0000005
-
4、设备主板故障也会导致无信号,建议联系专业的维修人员上门检修。5、设备显卡手指边与手指边插槽接触不良,清理一下显卡的金手指边,重新插回去,重新固定住即可。应用程序错误0xc0000005解决方法如下...
- 移动硬盘分区方法详解(移动硬盘分区步骤)
-
1、进入管理页面将新买的移动硬盘插入计算机的USB接口,右击此电脑后选择管理。2、选择压缩卷在页面里选择“磁盘管理”,右击移动硬盘,选择“压缩卷”。3、输入压缩空间的大小输入压缩空间的大小,点击右下角...
- windows7副本不是正版影响使用吗
-
会经常弹出提示和安全警告,如果我们安装了一个非正版的windows系统,就会经常弹出此windows副本不是正版的提示,那么此windows副本不是正版有什么影响呢,其实除了视觉外,功能也会有影响。w...
-
- 100个有效qq号以及密码2025(2021最新qq号和密码大全)
-
有关QQ登记全国之最的数据目前并没有最新数据更新,最新的该项数据是截止于2019年12月的数据,接下来为大家带来QQ等级全国第一的用户的有关数据,仅供大家娱乐之用:截止2019年12月,全国qq等级第一名的名字叫做“小风波”,QQ等级高达1...
-
2026-01-13 05:51 off999
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
