什么是恺撒密码?如何用Python实现它(36)

news2025/2/25 0:02:45

小朋友们好,大朋友们好!

我是猫妹,一名爱上Python编程的小学生。

欢迎和猫妹一起,趣味学Python。

今日主题

猫妹目前在看的,ycl Python等级考试五级教材,有一章是介绍恺撒密码的。

今天,咱们就学习下什么是恺撒密码,如何用Python实现它。

恺撒密码

在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。

它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

你懂了吗?

举个例子吧!

我们先看上图上半部分

明文ABCD~XYZ,密钥(加密规)则是+3,那么密文是DEF~XYZABC

加密规则可以使加3,也可以使加任意整数,如果超过26个字符,则需要对26取余。也就是上图的下半部分。

明文、密钥、密文、加密、解密

什么是明文呢?

没有加密的文字(或者字符串),一般人都能看懂的意思,属于密码学术语。

在通信系统中它可能是比特流,如文本、位图、数字化的语音或者数字化的视频图像等。

什么是密钥呢?

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。

密钥分为对称密钥与非对称密钥。

什么是密文呢?

加了密的文字,明文是加密之前的文字。

加密这个词有时指密文,但通常用来指加密的方法。对明文施加某种伪装或变换后的输出。

也可理解为不可直接理解的字符或比特集。但可通过算法还原的被打乱的消息,与明文相对。

什么是加密呢?

将明文转换为密文的过程就是加密。

什么是解密呢?

将密文转换为明文的过程就是加密。

ASCII

ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。

ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。

这128个字符分为可显示字符和控制字符。

可显示字符,其编号范围是32-126(0x20-0x7E),共95个字符。

控制字符,其编号范围是0-31和127(0x00-0x1F和0x7F),共33个字符。

26个字符大小写用的就是ASCII编码。

a~z,0x61~0x7a。

A~Z,0x41~0x5a。

chr()和ord()

chr()函数

用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。返回值是当前整数对应的 ASCII 字符。

该函数的返回值为字符串形式。例如,输入:chr(90) ,输出为 ‘Z’ 。

ord()函数

与chr()函数对应,输入ASCII字符表中字符的字符串形式,返回在字符表中的排序位次。

例如,输入:ord(“Z”),输出为 90 。

用chr和ord打印26字母大小写以及其ASCII值

Python实现恺撒密码加密和解密

有了之前的学习,我们可以用Python实现恺撒密码的加密和解密啦!

假设咱们要对26个英文字符(包括大写和小写)进行加密,加密方式凯斯密码,加密密钥是+4,解密密钥是-4。

加密密钥和解密密钥不同,属于非对称加密。

如果相同,属于对称加密。

程序逻辑:先判断字母是小写还是大小,然后以数值形式计算下相对于首字母的偏移量,再加上密钥和首字母数值,最后以字符形式输出。

好了,我们今天就学到这里吧!

如果遇到什么问题,咱们多多交流,共同解决。

我是猫妹,咱们下次见!

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

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

相关文章

2023-5-2面试题学习

1、内存的可见性你了解吗,讲述一下? 内存可见性是指多个线程访问同一共享变量时,在一个线程修改了该变量值后,下一个线程能立即看到这种变化的能力。 如果一个变量在多个线程间共享,那么为了避免出现数据不一致的情况&…

为什么DDD难落地?

为什么DDD难落地? lorne 2023-04-23 视频地址: 为什么DDD难落地?_哔哩哔哩_bilibili 洋葱架构图: DDD能解决什么问题? 其实DDD的核心是:提升业务的聚合性、提升业务的拓展性。 DDD的错误认知&#xff…

CentOS7安装和部署Jenkins

安装Java环境 检查旧版: rpm -qa | grep java若已经安装了旧版本,则需要先删除,删除方法: rpm -qa nodeps [java package]安装新版: yum install java-11-openjdk yum install java-11-openjdk-devel(开…

07 KVM虚拟机引导固件安装

文章目录 07 KVM虚拟机引导固件安装7.1 概述7.2 安装方法7.2.1 安装edk软件包7.2.2 查询edk软件是否安装成功 07 KVM虚拟机引导固件安装 7.1 概述 针对不同的架构,引导的方式有所差异。x86支持UEFI(Unified Extensible Firmware Interface)…

MySQL示例数据库(MySQL Sample Databases) 之 World数据库

文章目录 MySQL示例数据库(MySQL Sample Databases) 之 World数据库官方示例数据介绍World数据库World 数据库安装world-db/world.sql的脚本内容参考 MySQL示例数据库(MySQL Sample Databases) 之 World数据库 官方示例数据介绍 MySQL 官方提供了多个示例数据库,在…

【致敬未来的攻城狮计划】— 连续打卡第十九天:RA2E1串口通信基础知识

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

什么是GPT模型,GPT下载和国内镜像

什么是GPT模型,GPT模型是通过预训练的方式,采用无监督学习方式,大量语料输入,经过多次训练后得到模型。它能够自动学习并理解自然语言中的语义、句法和语法信息,并可以用于文本生成、对话系统、情感分析、机器翻译等自…

HTTP第二讲——HTTP相关概念

与HTTP 相关的各种应用 1.网络世界 实际的互联网是由许许多多个规模略小的网络连接而成的,这些“小网络”可能是只有几百台电脑的局域网,可能是有几万、几十万 台电脑的广域网,可能是用电缆、光纤构成的固定网络,也可能是用基站、…

SQL之SQL索引

文章目录 一、索引概述介绍演示优缺点 二、索引结构二叉树B-Tree (多路平衡查找树)BTreeHash 三、索引分类四、索引语法五、SQL性能分析SQL执行频率慢查询日志profile详情 索引使用原则验证索引效率最左前缀法则索引列运算字符串不加引号模糊查询or连接的条件数据分布影响 .SQL…

[LeetCode周赛复盘] 第 103 场双周赛20230429

[LeetCode周赛复盘] 第 103 场双周赛20230429 一、本周周赛总结2656. K 个元素的最大和1. 题目描述2. 思路分析3. 代码实现 2657. 找到两个数组的前缀公共数组1. 题目描述2. 思路分析3. 代码实现 2658. 网格图中鱼的最大数目1. 题目描述2. 思路分析3. 代码实现 2659. 将数组清…

二分(整数二分 浮点数二分)

目录 一、整数二分 模板 右边界二分查找(左开右闭) 左边界二分查找(左闭右开) 应用 数的范围 二、浮点数的二分 模板 应用 算术平方根 三、习题 1.数的三次方根 一、整数二分 tip:满足单调性的数组一定可以…

【Linux】进程优先级 + 环境变量

文章目录 📖 前言1. 进程优先级1.1 什么是优先级:1.2 如何修改优先级: 2. 进程的其他概念2.1 竞争性与独立性:2.2 并行与并发:2.3 进程间优先级的体现:2.4 O(1) 调度算法:2.4 进程上下文&#x…

C语言进阶——数据在内存中的存储,你知道吗?

今天我们深度剖析数据在内存中的存储: 重点知识: 1、数据类型详细介绍 2、整形在内存中的存储:原码、反码、补码 3、大小端字节序介绍及判断 4、浮点型在内存中的存储解析 之前我们涉及关于这一部分的知识只是大致的进行讲解&#xff0…

网络编程:UDP socket

文章目录 阅读前导 服务端定义日志框架成员属性服务端框架 初始化服务器创建套接字绑定 运行服务端读取数据参数解读 处理数据向客户端发送响应数据关闭文件描述符 客户端定义创建套接字绑定发送数据接收服务器的响应数据关闭文件描述符 测试1本地环回作用 本地测试netstat 指令…

继续科普:ChatGPT 最新写论文使用方法

这两天发现了几个国内就能用的ChatGPT,不需要魔法! 给大家推荐两种方法,大家自行选择: 1、电脑端安装VSCode软件,使用GPT插件: 优点: 无需魔法、无需付费、软件简单易用(稍懂电脑就会用) 缺点: ① 只支持电脑端,不支持手机:软件安装虽简单,但不一定所有人都…

行业常识_RFID

文章目录 1 RF2 RFID2.1 RFID的应用场景2.2 RFID工作原理 1 RF RF,是Radio Frequency的缩写, Radio,n. 收音机;无线电通讯; v. 用无线电通讯(或发送消息) Frequency,n. 频率 RF中文…

electron+vue3全家桶+vite项目搭建【16】electron多窗口,pinia状态无法同步更新问题解决

文章目录 引入实现效果展示问题展示解决方案思路整理1.主进程添加handle2.编写pinia插件3.完善pinia插件4.最终实现效果 引入 pinia是vue3官方支持的全局状态管理工具,简单易用,但是electron的多窗口虽然加载的页面是单个路由,但其实已经是另…

【全网首发开源教程】【Labview机器人仿真与控制】Labview与Solidworks多路支配关系-四足爬行机器人仿真与控制

🎉欢迎来到Labview专栏~四足爬行机器人仿真与控制 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:Labview-3D虚拟平台 文章作者技术和水平有限,如果文中出现错误&#…

【python】keras包:深度学习

Part 0. 环境配置 与 学习数据下载 keras包 与 tensorflow包 WinR ,输入指令: pip install tensorflow pip install keras 推荐镜像:-i https://pypi.tuna.tsinghua.edu.cn/simple/ 关于包 keras包相当于是 tensflow 包的前端 tensflow包…

15 | Qt的自定义信号

1 前提 Qt 5.14.2 2 具体操作 2.1 自定义信号 2.1.1 UI界面设置 2.1.1.1 widget.ui 2.1.1.2 setdialog.ui 2.1.2 headers 2.1.2.1 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui {class Widget; } QT_END_NAMESP…