古典密码之凯撒密码

一、原理与历史

1.1 历史背景

凯撒密码由古罗马的盖乌斯・尤利乌斯・凯撒(Gaius Julius Caesar)所创,他在军事通信中广泛使用该密码,通常采用偏移量k=3的方式,这也是 “凯撒移位” 这一名称的由来。例如,他会把命令中的字母按此规则转换,以防止敌方截获信息后轻易读懂。

1.2 安全性分析

由于凯撒密码只有 26 种可能的偏移情况,在现代计算机技术下,可通过暴力破解(即尝试所有 26 种偏移量)在极短时间内解密,所以它仅适用于对安全性要求极低的简单场景,不能用于保护敏感信息。

1.3 原理

凯撒密码又被称为凯撒变换或者叫变换密码。它是一种替换加密,通过将明文中的所有字母都在字母表上向后(或向前)移动固定的数目称为密文。

例如当偏移量为3时
ABCDEFGHIJKLMNOPQRSTUVWXYZ
DEFGHIJKLMNOPQRSTUVWXYZABC

凯撒密码看似简单,但其不仅本身就是一种加密方式,也同样作为很多加密算法的重要过程。例如,凯撒密码通常作为维吉尼亚密码中的一个步骤。
如果将凯撒密码写成数字表达式,那么加密函数将为:
image
解密函数即为
image
其中,k为偏移量。可以发现该密码只有26种不同的可能,我们要解密只需要遍历所有的可能,找到有意义的一组字符串即可。

二、代码

对于上述的公式,我们可以利用python将其实现出来。对于这个加密解密方法我们只需要解决的一个问题是,比如当密钥是1时,Z怎么变成A,这是编程的关键。所以我们可以考虑
image
这样子相当于将字母A作为一开始的字母,在其基础上进行加减,变成其他字母。而ord(now)-ord(a)是告诉当前字母是第几个字母,加上其偏移量后进行模运算达到计算结果。

点击查看代码
#加密部分
def casar(text,k):result = ""for char in text:if char.isalpha():# 处理大写字母if char.isupper():result += chr((ord(char) - ord("A") + k) % 26 + ord("A"))# 处理小写字母else:result += chr((ord(char) - ord("a") + k) % 26 + ord("a"))else:# 非字母字符保持不变result += charreturn result#解密部分
def casar_decrypt(text,k):result = ""for char in text:if char.isalpha():# 处理大写字母if char.isupper():result += chr((ord(char) - ord("A") - k) % 26 + ord("A"))# 处理小写字母else:result += chr((ord(char) - ord("a") - k) % 26 + ord("a"))else:# 非字母字符保持不变result += charreturn resultdef casar_decrypt_no_k(text):for k in range(1,26):result = ""for char in text:if char.isalpha():# 处理大写字母if char.isupper():result += chr((ord(char) - ord("A") - k) % 26 + ord("A"))# 处理小写字母else:result += chr((ord(char) - ord("a") - k) % 26 + ord("a"))else:# 非字母字符保持不变result += charprint(f"密钥 {k} 的解密结果: {result}")returnwhile True:print("1.加密")print("2.解密")print("3.解密无密钥")print("4.退出")choice = input("请输入你的选择:")if choice == "1":text = input("请输入要加密的文本:")k = int(input("请输入加密密钥:"))print("加密后的文本为:" + casar(text,k))elif choice == "2":text = input("请输入要解密的文本:")k = int(input("请输入解密密钥:"))print("解密后的文本为:" + casar_decrypt(text,k))elif choice == "3":text = input("请输入要解密的文本:")casar_decrypt_no_k(text)elif choice == "4":breakelse:print("请输入正确的选择!")

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

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

相关文章

vi/vim文本编辑器

Vim是从 vi 发展出来的一个文本编辑器,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性 vi/vim 共分为三种模式: 命令模式、 输入模式、底线命令模式(末行模式) 命令模式:刚刚启动 vi/vim,便进入…

B3869 [GESP202309 四级] 进制转换-题解

题目 题目描述 $N$ 进制数指的是逢 $N$ 进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A…

LeetCode 139. 单词拆分(Word Break) - 动态规划深度解析 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

电子商务网站项目预算如何用php做电商网站

WTM系列视频教程序章文字摘要:“这个视频教程我列了个提纲,分成12部分,比较详细的介绍了WTM的功能和使用方法。另外还有一些我个人对于编程的理解,当然个人理解这部分你们就当故事听,不一定对,哈哈。”“有…

设计类电子书网站比较好的网站空间

来源:智造智库【导读】国家新一代人工智能发展规划中明确提出,发展自动驾驶汽车和轨道交通系统,加强车载感知、自动驾驶、车联网、物联网等技术集成和配套,开发交通智能感知系统,形成我国自主的自动驾驶平台技术体系和…

Spring Boot 应用中构建配置文件敏感信息加密解密方案

Spring Boot 应用中构建配置文件敏感信息加密解密方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

springcloud gateway Error creating bean with name bootstrapImportSelectorConfiguration:

springcloud gateway Error creating bean with name bootstrapImportSelectorConfiguration 修改 gateway 版本 从 2.2.1 ===> 2.1.3<!-- 引入 gateway 依赖 --><dependency><groupId>org.sprin…

做招聘网站需要哪些手续长沙大型网站建设公司

[css] 说说你对前端二倍图的理解&#xff1f;移动端使用二倍图比一倍图有什么好处&#xff1f; 二倍图是指单位面积下设备像素与css像素个数之比为 4 的位图。移动端使用二倍图可以在Retina屏幕下保真展示。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃…

标准网站建设报价单六安在建项目和拟建项目

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;什么是进程地址空间&#xff1f;二&#xff0c;进程地址空间是怎么设计的&#xff1f;三&#xff0c;为什么要有进程地址空间&#xff1f; 一&#xff0c;什…

网站空间控制面板iis7.0建设网站

1、查看进程 ps axuf ---静态查看所有进程#user 用户#PID 每个进程的标识符&#xff0c;父进程为1#VSZ 虚拟内存#RSS 实际内存#pts 窗口 TTY系统启动窗口# %MEM 内存#STAT 该进程的状态&#xff0c;包括&#xff1a;S 可中断睡眠Ss 父进程S< 优先级较高SN…

网站认证必须做么网络广告策划案

移动 表、表分区、LOB字段、索引、分区索引 到另一表空间 alter table 命令移动 table, partition, lob字段alter index 命令移动 索引, 分区索引移动表π 移动表&#xff08;非分区表&#xff09;&#xff1a; alter table <schema.table> move tablespace <new tab…

郑州网站开发网站制作模板网站

Hadoop中自带的hadoop-mapreduce-examples-2.7.6.jar含有一些事例&#xff0c;本文将用pi计算圆周率。若想了解其计算原理&#xff0c;参考&#xff1a;http://thinkinginhadoop.iteye.com/blog/710847。 具体步骤如下&#xff1a; 1. 启动Hadoop 切换到Hadoop安装目录下的sb…

完整教程:PyCharm接入DeepSeek,实现高效AI编程

完整教程:PyCharm接入DeepSeek,实现高效AI编程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

Nginx的核心功能及实现

Nginx 核心功能与实现分析 项目概述 Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 核…

2025焚烧炉厂家权威推荐,技术实力与市场口碑深度解析

随着环保意识的不断提升和固体废物处理需求的持续增长,焚烧炉作为一种能实现垃圾减量化、无害化处理的关键设备,在市政、工业、医疗等多个领域的应用愈发广泛。然而,当前国内焚烧炉行业呈现出品牌数量多、质量参差不…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.8 R语言解题 - 指南

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.8 R语言解题 - 指南2025-10-05 15:25 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important;…

创办一个网站的费用黄山自驾游攻略

随着科技的飞速发展&#xff0c;智慧园区已成为城市现代化建设的重要组成部分。山海鲸可视化智慧园区解决方案&#xff0c;作为业界领先的数字化革新方案&#xff0c;正以其独特的技术优势和丰富的应用场景&#xff0c;引领着智慧园区建设的新潮流。 本文将带大家一起了解一下…

Go 语言中的 panic 详解 - 指南

Go 语言中的 panic 详解 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

高考加油!UI界面生成器! - 教程

高考加油!UI界面生成器! - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

UnityShader入门精要-系统语义与函数体

系统语义与函数体 系统语义标记,指该类型将返回给流水线GPU做处理。结构体做返回值时,不需要在函数头标记系统语义。结构体外部和内部的标记会产生二义性,所以新版本只能在内部声明原版错误 Shader "Unity Sha…