目录

引言

故事

思路分析

代码实现

对代码的分析

写在最后的话


引言

古往今来,人们从未停止对信息的获取与对信息的保护(加密)。而在历史上,有一种加密方式广为人知;这种加密方式也给后来的加密方式的产生、发展提供了有益借鉴。“这种加密方式是什么呢?是,凯撒密码。”

“那么,什么是凯撒密码呢?我们怎么去理解它呢?在这篇博文中,也许,你会找到答案。”


故事

……

Caesar: "V'z fbeel gb urne gung lbh'ir pnhtug n pbyq, Pvpreb."

A few days later.

Cicero: "Nsgre erfg n srj qnlf, V sryy zhpu orggre, abj."

……

看了凯撒与西塞罗两人的对话后,是不是觉得云里雾里的呢?感觉,满满火星文的感觉……“那是因为凯撒与西塞罗两人对信的内容进行了加密哦。”

那么,我们有没有办法破解他们的信呢(虽然,这有点不道德。)?

……


思路分析

  1. 凯撒密码的核心思想,是,依照字母表,对字母进行位次的变换,从而实现对文本的加密。
  2. 让我们以字母“A”为例。
  3. 我们知道,英文字母表总共有26个字母,那么,可知,除去“A”后,还剩下25个字母。
  4. 这样,我们将很容易理解——当将“A”的位次向右移动26位时,我们又回到了初始位置“A”。
  5. “思考,如果我们只移动13位呢?”
  6. 将字母“A”向右移动13位,找到字母“N”(有没有发现,字母“N”再向右移动13位,我们就得到字母“A”了呢?)。
  7. 自然地,以13为密匙,我们能实现字母“A”与字母“N”的相互指代。

代码实现

# -*- coding: utf-8 -*-# Created by Violet. All rights reserved!#%%
# 调用函数库。import time as t#%%
# 创建字母表。Alp = dict()for y in (65,97): # Unicode编码中 "A"&"a" 的编码。for x in range(26): # 遍历26个字母。Alp[chr(x + y)] = chr(((x + 13) % 26) + y)#print(Alp)    #%%
# 导入文本,加密/解密。while True:Txt = input("Encrypt or decrypt?")t.sleep(0.3)print("")print("".join(Alp.get(txt,txt) for txt in Txt))t.sleep(0.4)# 继续?print("\nPress Q/q to exit. (*'▽'*)♪")t.sleep(0.4)Ans = input('Que: Shall we continue?')if Ans in {"Q","q"}:breakelse:print("")pass#%%
# To be continued.

对代码的分析

  1. ……
  2. 既然要对文本进行加密/解密,那么首先,我们需要有一张字母表(用来转译)。“所以,在加密/解密前,我们要先制作这么一张字母表。”
  3. 在“Unicode编码”里——“A”的编码为“65”;“a”的编码为“97”。
  4. “chr()函数”:查找编码对应的字符串;“ord()函数”:查找字符串对应的编码。
  5. “思考,这么一个问题。”
  6. 字母表是用来转译用的,其格式为“A”表示“N”,之类的。那么,我们用什么类型(元组?列表?集合?字典?)来做这个字母表呢?字典!
  7. “授人以鱼不如授人以渔。”所以,对于创建字母表那段代码的理解,还望读者下来思考。
  8. ……
  9. Alp.get(txt,txt) for txt in Txt 的意思是——遍历“Txt字符串”里的每一个“txt字符”,用“get()函数”从字母表“Alp”中查找对应值,如果有,返回对应值,没有则返回原来的“txt”值。
  10. "".join(Alp.get(txt,txt) for txt in Txt) 的意思是,将转译后的字符连接起来(至于引号里为什么没有空格,因为,你输入的文本里已经有空格了,转译的时候空格也有被保留,所以,不需要再加空格了。)
  11. ……
  12. 当我们要转译很多的文本时,一次一次地按“F5键”会不会太麻烦呢?麻烦。“所以,我们用了一个 While循环 ,不过,要记得设置退出的路径。”
  13. 然后,当我们试运行程序时,发现,显示速度有点快,感觉怪怪的,,那么,就让我们使用“时间库time”来帮助我们吧(t.sleep())。
  14. To be continued.
  15. ……

那么,凯撒与西塞罗两人说了些什么呢?

……

Caesar: " I'm sorry to hear that you've caught a cold, Cicero."

Cicero: "After rest a few days, I feel much better, now."

……

(哔哔警告,打探别人的隐私是个坏习惯。)


写在最后的话

  • “合抱之木,生于毫末。九层之台,起于累土。千里之行,始于足下。”
  • 我想去北极看极光,我想在撒哈拉沙漠散步,我想在大堡礁潜水,我想去夏威夷,我想打卡自由女神像……“你也有着很多想去的地方吧?那么,让我们下定决心变好。”

Python小游戏:凯撒密码相关推荐

  1. php实现凯撒密码加密算法,Python实现的凯撒密码算法示例

    本文实例讲述了Python实现的凯撒密码算法.分享给大家供大家参考,具体如下: 一 介绍 凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方 ...

  2. Python练习题:凯撒密码 的一种简单解法

    在学习Python基本数据类型部分的内容时,字符串部分所含的函数比较多,类型比较复杂.这道凯撒密码的题有多种解法.这里介绍一种解法.设计到了索引.for-in-循环语句.if条件语句.字符串拼接等知识 ...

  3. python脚本-caeser凯撒密码-rot13

    caeser凯撒密码&rot13 import base64# caeser凯撒密码1-27 content = "qiPGS{3apElcg1ba_1f_r4fl}" r ...

  4. Python编程:实现凯撒密码加密解密

    凯撒密码 原理: 通过把字母移动一定的位数来实现加解密 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文. 例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替 ...

  5. 运用python编写凯撒密码并实现_凯撒密码实现英文短句的加解密

    1. 将"We are students."这个英文词句用k=4的凯萨密码翻译成密码 1. 恺撒密码, 作为一种最为古老的对称加密体制,他的基本思想是: 通过把字母移动一定的位数来 ...

  6. python密码学凯撒密码_凯撒密码在Python

    python密码学凯撒密码 Hello everyone, in this tutorial you'll learn about Caesar cipher in Python. If you ha ...

  7. 《Python游戏编程快速上手》第十四章----凯撒密码

    <Python游戏编程快速上手>的第十二章主要讲了笛卡尔坐标系的基本数学知识,我就不重现了:然后第十三章主要是一个笛卡尔坐标系的小应用,这个小应用也是非常简单的,所以我就不重现了. 今天主 ...

  8. Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数

    Python入门到实战(一) 为什么写这篇文章 Part 1 入门部分 什么是编程语言? Python的优势 目前应用 特点 Part 2 6种内置对象 1 整数.浮点数 2 字符串 3 列表 4 元 ...

  9. python凯撒密码详解_Python基础题目集--课堂案例

    这些案例均为在校期间学习<python基础编程>课程的案例,适合初学者练手~ 1.输入分数,返回等级 ''' 分数区间为0~100,等级:A(>=90).B(>=80).C(& ...

最新文章

  1. iOS点击空白收回键盘
  2. 简单易学的python自动化办公教学视频-Python自动化办公之操作Excel文件
  3. linux安装jdk教程
  4. nginx自定义模块编写-实时统计模块--转载
  5. 每天数十亿次请求的应用经验分享,值得参考!
  6. C语言编程的Debug版和Release版
  7. 水阀门开关方向图解_低压阀门开闭器
  8. 概率论-3.4 多维随机变量的特征数
  9. ubuntu12.04安装及配置过程详解1
  10. linux如何调试elf程序,Linux应用程序elf描述
  11. 记一次 IIS 7.0 身份验证相关的问题解决
  12. 实例分解神经网络反向传播算法(转)
  13. 首次运行 tensorflow 项目之 vgg 网络
  14. java实现模拟考试系统_基于JAVA SWING考试模拟系统.doc
  15. 中国饭局上的座次讲究
  16. 繁华落尽——王思聪的熊猫直播之死,是腾讯对360的又一次胜利
  17. 访问文件服务器电脑卡死,客户机访问服务器的共享文件会卡死
  18. linux识别riser卡,Riser卡和PCIe槽位
  19. uni-table单元格中预览图片:阻止冒泡
  20. 微信小程序使用iconfont阿里矢量多色图标

热门文章

  1. 计网复习——第三章 数据链路层
  2. 【记忆化搜索】UVA 10118 free candy
  3. 人力资源杂志人力资源杂志社人力资源编辑部2022年第20期目录
  4. Java 模拟面试题
  5. BZOJ1812 RIV 树形dp
  6. 纯css实现div背景色从左到右的刷动效果
  7. 最新 2020 Android 开发者知识体系
  8. Java · PTA探险之旅
  9. Win10开启和使用Hyper-V功能
  10. 2021-10-20 推荐一个在线视频格式转换的好网站https://www.zamzar.com/,我测试过mp4转到gif