没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
18页
本章将通过Python介绍密码学,伴随故事背景介绍不同的加密方法,并利用前面所学的知识,用Python将加密程序编写出来。凯撒大帝是杰出的军事家,为后来的罗马帝国开疆拓土,打了无数胜仗。他在行军时经常要给士兵们传达指令,而万一这些指令被敌人的间谍截获,敌人获悉了他们的计划,打仗就非常被动了。 公元前 58 年左右,凯撒大帝想出了一 个办法,他决定把自己的指令加密。他告诉自己的士兵们,出征后,指令的每个字母都会往右移 3 格。这样就算敌人截获了信息,看到的也是无法理解的一堆字母。这是流传下来的早期加密方法。。。。。。。。。
资源推荐
资源详情
资源评论
·第 11 章 密码的奥妙——众目睽睽之下的悄悄话·
199
密码的奥妙——众目睽睽之下的悄悄话
本章将通过 Python 介绍密码学,伴随故事背景介绍不同的加密方法,并利用前面所
学的知识,用 Python 将加密程序编写出来。
11.1 打胜仗要靠算法
凯撒大帝是杰出的军事家,为后来的罗马帝国开疆拓土,打了无数胜仗。他在行军时经常要
给士兵们传达指令,而万一这些指令被敌人的间谍截获,敌人获悉了他们的计划,打仗就非
常被动了。
公元前 58 年左右,凯撒大帝想出了一
个办法,他决定把自己的指令加密。他
告诉自己的士兵们,出征后,指令的每
个字母都会往右移 3 格。这样就算敌人
截获了信息,看到的也是无法理解的一
堆字母。这是流传下来的早期加密方法。
此后,但凡想要传递不被别人知道的信息,大家就开始用密码。大家约定好一个规则,给明
文加密,即把明文变成密文传递。收到密文后,根据规则解密就可以转回明文。
只要学好逻辑学和数学,早期密码还是比较容易破译的。
到了第二次世界大战时,纳粹德国发明了 Enigma,即可以用机器加密,其加密速度和复杂度
都比之前的加密方法优越很多。这个加密方法成了希特
勒的重要武器。
英国外交部通信处召集了包括“计算机科学之父”艾
伦·图灵(Alan Turing)在内的多位计算机科学家、
数学家、语言学家,经过艰难的工作,最终成功设计出
能够破解 Enigma 的机器,帮助盟军取得了“二战”的
Python项目开发实战_密码学之编写加密程序
少博士趣学 Python
200
胜利。
除军事用途外,通信行业也使用编码,比如早期的电报使用的就是莫尔斯码。如今计算机和
互联网渗透到了我们生活中的方方面面,如何保护好银行卡、网络账户的密码等重要信息,
是现代密码学的关键。
在这一章里,我们会了解不同的加密方法,并编写加密的程序。
11.2 案例 1:倒着说话——调转密码
11.2.1 调转密码介绍
首先,我们来看一种简单的加密方法。调转密码通过把文字倒着打印加密。
明文 意思 密文
i love apples 我喜欢苹果 selppa evol i
attack tomorrow 明日进攻 worromot kcatta
这种加密方法的加密程度非常弱。例如,“吧了么什说想我道知以可就,看一看要只你”。因
为它比较简单,我们就当成是热身练习吧。
11.2.2 编写调转密码
编写一段代码,让用户输入明文,计算出调转密码的密文后,打印出密文。
请输入明文>>>i love apples
你的密文是: selppa evol i
调转密码程序 1
1.定义函数 encrypt,带参数 original,这个参数是明文的字符串
1)original[::-1]将 original 里明文的字符串反转,将返回的结果存到局部变量 code 里
2)函数 encrypt 返回存在局部变量 code 里的密文
2.用 input()让用户输入明文,将明文字符串存到变量 text 里
3.调用 encrypt 函数,将 text 变量里的明文字符串作为参数,将返回的密文值存到变量 secret 里
4.打印密文
1.def encrypt(original):
→ code = original[::-1]
·第 11 章 密码的奥妙——众目睽睽之下的悄悄话·
201
→ return code
2.text = input(″请输入明文>>>″)
3.secret = encrypt(text)
4.print(″你的密文是:″, secret)
在第 4 章里,我们介绍了如何处理字符串。例如:
c = ″吃葡萄不吐葡萄皮″
c[1 : 7] 会返回″葡萄不吐葡萄″
c[1 : 7 : 2] 会返回″葡不葡″
c[7 : 1 : -1] 会返回″皮萄葡吐不萄″
c[ : : -1] 会返回″皮萄葡吐不萄葡吃″
编写好后保存,运行代码。看看如果输入 attack tomorrow,是否可以得到下面的结果?
请输入明文>>> attack tomorrow
你的密文是: worromot kcatta
11.2.3 编写调转密码窗口
为了改进程序,我们可以利用前面学的 Tkinter GUI 库,编写一个有文本框、按钮和标签的
小窗口,方便大家使用,如图 11- 1 所示。
图 11-1 调转密码窗口
调转密码程序 2
1.导入 Tkinter 模块
2.设置窗口
3.在窗口里生成一个文本框,命名为 inputBox
4.在窗口里生成一个按钮,设显示文字为“加密”,命名为 submitButton
5.在窗口里生成一个标签,命名为 codeLabel
6.定义函数 encrypt,带 event 事件参数
1)找到文本框里的明文,存入变量 original
2)original[::-1]将 original 里明文的字符串反转,将返回的结果存入局部变量 code
3)设标签的文本为 code 里面的密文
7.把 encrypt 函数绑定到点击 submitButton 按钮的事件<Button-1>上
少博士趣学 Python
202
8.运行窗口
1.from tkinter import *
2.window = Tk()
3.inputBox = Entry(window)
inputBox.pack()
4.submitButton = Button(window,text=″加密″)
submitButton.pack()
5.codeLabel = Label(window)
codeLabel.pack()
6.def encrypt(event):
→ original = inputBox.get()
→ code = original[::-1]
→ codeLabel.config(text=code)
7.submitButton.bind(″<Button-1>″,encrypt)
8.window.mainloop()
编写好后,保存、运行代码。
之后我们会了解不同的加密方法,用不同的方式编写加密函数。
11.3 案例 2:绕小弯说话——凯撒密码
11.3.1 凯撒密码介绍
凯撒密码是一种替换密码,明文里的每个字母都是用其他字母替换的。替换的规律是将字母
往右移动几格。具体移动的数字我们称之为密钥。
相传凯撒大帝每次会将字母移动 3 格,他的密钥是 3。所以 a 会变成 d,b 会变成 e,以此类
推,我们可以把这个规律总结成一个转盘,如图 11- 2 所示。
剩余17页未读,继续阅读
资源评论
好知识传播者
- 粉丝: 579
- 资源: 4204
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 超级简单的unity开发跑酷游戏教程(包教包会)
- 基于逻辑回归对航空公司乘客满意度的因素分析源码
- video_20240502_150240.mp4
- SGL 是一种轻量快速的图形库,该库旨在为MCU级别的处理器提供一美观轻量的GUI
- 省市区 三级联动 连续两个联动 html+JS 案例
- 继承Mapper实现的方法,无需编写太多mapper.xml文件,即可获得CRUD功能
- Docker之限制容器的资源使用
- 手机电脑互传文件LocalSend(一款免费、开源、跨平台的局域网文件互传软件)
- 小波分析是一种基于时频分析的数学工具,它的核心概念是小波变换和小波系数 小波变换通过将信号与小波函数进行卷积运算,得到一系列的小
- 五一数学建模联赛的论文通常包含了对特定问题的数学建模、算法设计、编程实现以及结果分析等部分 由于具体的题目和解决方案会因每年的比
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功