当前位置: 首页 > news >正文

python实现符文加、解密

在历史悠久的加密技术中,恺撒密码以其简单却有效的原理闻名。通过固定的字母位移,明文可以被转换成密文,而解密则是逆向操作。这种技术不仅适用于英文字母,还可以扩展到其他语言的字符体系,如日语的平假名或汉语的拼音。本文探讨了恺撒密码的基本原理及其在实际应用中的使用案例,并用python来实现该方法。

工作中经常性会需要对一些信息进行解密,人们普遍使用一些较为简单的加密方式。加密技术不仅令人着迷,还在信息安全领域发挥着重要作用。通过深入理解这些方法,我们能更好地保护数据安全,同时也能理解历史上许多重要文献背后隐藏的秘密。恺撒密码作为加密技术的先驱,不仅启发了现代密码学的发展,也提醒我们保持对数据安全和隐私的关注。

在这篇文章中,我们将探索恺撒密码和相关字符加解密的基本原理及其在现代应用中的价值。通过python分析其加密和解密过程,我们可以更好地理解数据保护的重要性,以及加密技术如何在信息交流和安全中发挥作用。

目录

一、凯撒密码加、解密

1.1 通过位移的python实现

1.2 通过建立映射的python实现

二、函数映射加、解密


一、凯撒密码加、解密

我们首先学习通过凯撒密码进行解密。恺撒密码是一种通过将明文字母表按照固定数目进行位移来加密的方法。此加密技术不仅适用于英文字母,也可以应用于其他字符体系,如日语中的平假名或汉语拼音。

如下图所示我们用小写的英文字母表示明文,用大写英文字母表示密文,并对字母表平移三位字母方式进行加密。此处我们需要对KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV 这段密文进行解密,并将解密后的信息写入同目录caesar.txt文件中。

1.1 通过位移的python实现

# 定义一个名为 decrypt 的函数,该函数接收两个参数:ciphertext(密文)和 shift(位移量)
def decrypt(ciphertext, shift):# 初始化一个空字符串 plaintext,用于存储解密后的明文plaintext = ""# 遍历密文中的每个字符for char in ciphertext:# 判断字符是否为大写英文字母if 'A' <= char <= 'Z':# 对大写英文字母进行解密操作,ord(char) 获取字符的 ASCII 码值,ord('A') 是字母 A 的 ASCII 码值# (ord(char) - ord('A') - shift) 计算字符在字母表中的相对位置并减去位移量# % 26 确保结果仍在 26 个英文字母的范围内# chr(...) 将计算后的 ASCII 码值转换回字符decrypted_char = chr((ord(char) - ord('A') - shift) % 26 + ord('A'))# .lower() 将解密后的大写字母转换为小写plaintext += decrypted_char.lower()  # 转换为小写else:# 如果字符不是大写英文字母,则直接添加到 plaintext 字符串中plaintext += charreturn plaintext# 给定的密文
ciphertext = "KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV"# 解密密文,假设密文是通过向后平移3位加密的
shift = 3
decrypted_text = decrypt(ciphertext, shift)
print("明文信息为:", decrypted_text)# 将解密后的文本写入文件
file_path = './caesar.txt'with open(file_path, 'w') as file:file.write(decrypted_text)

1.2 通过建立映射的python实现

list_c = {'A':'x','B':'y','C':'z','D':'a','E':'b','F':'c','G':'d','H':'e','I':'f','J':'g','K':'h','L':'i','M':'j','N':'k','O':'l','P':'m','Q':'n','R':'o','S':'p','T':'q','U':'r','V':'s','W':'t','X':'u','Y':'v','Z':'w'}# 给定的密文
ciphertext = "KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV"# 解密密文
print("明文信息为:",ciphertext)
plaintext = ""
for char in list(ciphertext):print(list_c[char])plaintext += str(list_c[char])# plaintext += list_c[char]
print("加密信息为:",plaintext)
# 将解密后的文本写入文件
file_path = './caesar.txt'with open(file_path, 'w') as file:
file.write(plaintext)

打印结果:


明文信息为: KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV

加密信息为: helloiamapoliceofficerpleaseshowmeyouridentificationdocuments


 

二、函数映射加、解密

这张图片展示了两个加密和解密的字符串,分别使用了不同的字母替换方法。第一个字符串使用了一种特定的字母排列方式来隐藏信息,而第二个字符串则显示了如何通过相同的排列方式来解密。 

使用python实现映射关系

list_c = {'a':'D','b':'K','c':'V','d':'Q','e':'F','f':'I','g':'B','h':'J','i':'W','j':'P','k':'E','l':'S','m':'C','n':'X','o':'H','p':'T','q':'M','r':'Y','s':'A','t':'U','u':'O','v':'L','w':'R','x':'G','y':'Z','z':'N'}# 给定的密文
ciphertext = "this is the police please stay calm"# 解密密文
print("明文信息为:",ciphertext)
plaintext = ""
for char in list(ciphertext):if char == " ":plaintext += char# print(list_c[char])else: plaintext += str(list_c[char])# plaintext += list_c[char]
print("加密信息为:",plaintext)
# 将解密后的文本写入文件
file_path = '/home/qingjiao/数据安全应用/plaintext.txt'with open(file_path, 'w') as file:
file.write(plaintext)

打印结果:


明文信息为: this is the police please stay calm

加密信息为: UJWA WA UJF THSWVF TSFDAF AUDZ VDSC


相关文章:

python实现符文加、解密

在历史悠久的加密技术中&#xff0c;恺撒密码以其简单却有效的原理闻名。通过固定的字母位移&#xff0c;明文可以被转换成密文&#xff0c;而解密则是逆向操作。这种技术不仅适用于英文字母&#xff0c;还可以扩展到其他语言的字符体系&#xff0c;如日语的平假名或汉语的拼音…...

【解释】i.MX6ULL_IO_电气属性说明

【解释】i.MX6ULL_IO_电气属性说明 文章目录 1 Hyst1.1 迟滞&#xff08;Hysteresis&#xff09;是什么&#xff1f;1.2 GPIO的Hyst. Enable Field 参数1.3 应用场景 2 Pull / Keep Select Field2.1 PUE_0_Keeper — Keeper2.2 PUE_1_Pull — Pull2.3 选择Keeper还是Pull 3 Dr…...

02-《石莲》

石 莲 石莲&#xff08;学名&#xff1a;Sinocrassula indica A.Berger&#xff09;&#xff0c;别名因地卡&#xff0c;为二年生草本植物&#xff0c;全株无毛&#xff0c;具须根。花茎高15-60厘米&#xff0c;直立&#xff0c;常被微乳头状突起。茎生叶互生&#xff0c;宽倒披…...

MySQL之聚簇索引和非聚簇索引

1、什么是聚簇索引和非聚簇索引&#xff1f; 聚簇索引&#xff0c;通常也叫聚集索引。 非聚簇索引&#xff0c;指的是二级索引。 下面看一下它们的含义&#xff1a; 1.1、聚集索引选取规则 如果存在主键&#xff0c;主键索引就是聚集索引。如果不存在主键&#xff0c;将使…...

Web后端开发之前后端交互

http协议 http ● 超文本传输协议 &#xff08;HyperText Transfer Protocol&#xff09;服务器传输超文本到本地浏览器的传送协议 是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程。 HTTP是一个基于TCP/IP通信协议来传递数据. HTT…...

520. 检测大写字母 Easy

我们定义&#xff0c;在以下情况时&#xff0c;单词的大写用法是正确的&#xff1a; 全部字母都是大写&#xff0c;比如 "USA" 。 单词中所有字母都不是大写&#xff0c;比如 "leetcode" 。 如果单词不只含有一个字母&#xff0c;只有首字母大写&#xff0…...

vue的跳转传参

1、接收参数使用route,route包含路由信息&#xff0c;接收参数有两种方式,params和query path跳转只能使用query传参,name跳转都可以 params&#xff1a;获取来自动态路由的参数 query&#xff1a;获取来自search部分的参数 写法 path跳,query传 传参数 import { useRout…...

docker配置镜像源

1&#xff09;打开 docker配置文件 sudo nano /etc/docker/daemon.json 2&#xff09;添加 国内镜像源 {"registry-mirrors": ["https://akchsmlh.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc…...

MySQL高级-SQL优化-insert优化-批量插入-手动提交事务-主键顺序插入

文章目录 1、批量插入1.1、大批量插入数据1.2、启动Linux中的mysql服务1.3、客户端连接到mysql数据库&#xff0c;加上参数 --local-infile1.4、查询当前会话中 local_infile 系统变量的值。1.5、开启从本地文件加载数据到服务器的功能1.6、创建表 tb_user 结构1.7、上传文件到…...

认识100种电路之振荡电路

在电子电路领域&#xff0c;振荡是一项至关重要的功能。那么&#xff0c;为什么电路中需要振荡&#xff1f;其背后的原理是什么&#xff1f;让我们一同深入探究。 【为什么需要振荡电路】 简单来说&#xff0c;振荡电路的存在是为了产生周期性的信号。在众多电子设备中&#…...

SSH 无密登录配置流程

一、免密登录原理 非对称加密&#xff1a; 由于对称加密的存在弊端&#xff0c;就产生了非对称加密&#xff0c;非对称加密中有两个密钥&#xff1a;公钥和私钥。公钥由私钥产生&#xff0c;但却无法推算出私钥&#xff1b;公钥加密后的密文&#xff0c;只能通过对应的私钥来解…...

Python自动化运维 系统基础信息模块

1.系统信息的收集 系统信息的收集&#xff0c;对于服务质量的把控&#xff0c;服务的监控等来说是非常重要的组成部分&#xff0c;甚至是核心的基础支撑部分。我们可以通过大量的核心指标数据&#xff0c;结合对应的检测体系&#xff0c;快速的发现异常现象的苗头&#xff0c;进…...

如何安装和配置Monit

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 关于 Monit Monit 是一个有用的程序&#xff0c;可以自动监控和管理服务器程序&#xff0c;以确保它们不仅保持在线&#xff0c;而且文…...

【redis】redis分片集群基础知识

1、基本概念 1.1定义 分片&#xff1a;数据按照某种规则&#xff08;比如哈希&#xff09;被分割成多个片段&#xff08;或分片&#xff09;&#xff0c;每个片段被称为一个槽&#xff08;slot&#xff09;。槽是Redis分片集群中数据的基本单元。节点&#xff1a;Redis分片集…...

Python 面试【★★★★】

欢迎莅临我的博客 &#x1f49d;&#x1f49d;&#x1f49d;&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

Knife4j 2.2.X 版本 swagger彻底禁用

官方文档配置权限&#xff1a;https://doc.xiaominfo.com/v2/documentation/accessControl.html#_3-5-1-%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E5%B1%8F%E8%94%BD%E8%B5%84%E6%BA%90 通常有时候我们碰到的问题如下&#xff1a; 在开发Knife4j功能时,同很多开发者经常讨论的问…...

linux下mysql的定时备份

备份是容灾的基础&#xff0c;是指为了防止系统出现操作或系统故障导致数据丢失&#xff0c;而将全部或部分数据集合从应用主机的硬盘或阵列复制到其他的存储介质的过程为什么备份 硬件故障软件故障误操作病毒入侵保留历史记录灾难性事件 存储介质 光盘磁带硬盘磁盘阵列DAS:直接…...

【13】地址-比特币区块链的地址

1. 比特币区块链的地址 这就是一个真实的比特币地址:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。这是史上第一个比特币地址,据说属于中本聪。 比特币地址是完全公开的,如果你想要给某个人发送币,只需要知道他的地址就可以了。实际上,所谓的地址,只不过是将公钥表示成人类可读…...

【数据结构】数据结构前置知识

这里写目录标题 基本概念与术语数据数据元素数据项数据对象数据结构 逻辑结构和物理结构物理结构顺序存储结构链式存储结构 逻辑结构集合结构线性结构树形结构图形结构 算法时间复杂度和空间复杂度大O的渐进表示法时间复杂度常数阶线性阶对数阶平方阶常见时间复杂度 空间复杂度…...

企业数据挖掘平台产品特色及合作案例介绍

泰迪企业数据挖掘平台是一款通用的、企业级、智能化的数据分析模型构建与数据应用场景设计工具&#xff0c;能够一体化地完成数据集成、模型构建、模型发布&#xff0c;为数据分析、探索、服务流程提供支撑&#xff0c;提供完整的数据探索、多数据源接入、特征处理、模型搭建、…...

5分钟掌握网盘直链解析神器:彻底告别下载限速烦恼

5分钟掌握网盘直链解析神器&#xff1a;彻底告别下载限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

从控制台账单看使用 Taotoken token plan 带来的实际节省

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从控制台账单看使用 Taotoken token plan 带来的实际节省 在管理大模型 API 调用成本时&#xff0c;除了关注模型单价&#xff0c;…...

Java程序员必看:收藏这份2026大模型转型攻略,小白也能轻松入行高薪赛道!

Java程序员必看&#xff1a;收藏这份2026大模型转型攻略&#xff0c;小白也能轻松入行高薪赛道&#xff01; 随着大模型&#xff08;LLMs&#xff09;成为IT行业新质生产力的核心引擎&#xff0c;2026年国内大模型核心市场规模将突破700亿元&#xff0c;人才缺口达200万。本文专…...

Excel公式生成黑科技落地实录(ChatGPT+Power Query+LAMBDA三引擎联动)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Excel公式生成黑科技落地实录&#xff08;ChatGPTPower QueryLAMBDA三引擎联动&#xff09; 场景驱动的智能公式生成闭环 当财务团队需在5分钟内为127张销售报表动态生成「跨表多条件加权滚动同比」公…...

从化学结构到生物大分子:Ketcher的模块化绘图技术深度解析

从化学结构到生物大分子&#xff1a;Ketcher的模块化绘图技术深度解析 【免费下载链接】ketcher Web-based molecule sketcher 项目地址: https://gitcode.com/gh_mirrors/ke/ketcher Ketcher作为一款专业的Web分子编辑器&#xff0c;不仅支持基础化学结构绘制&#xff…...

企业私有化AI训练推理一体工作站/自动化AI算法训练服务器DLTM让企业AI自主可控

在企业智能化转型的浪潮中&#xff0c;AI模型开发始终是横亘在多数企业面前的一道“技术鸿沟”。一边是熟悉行业场景、深谙业务痛点的业务团队&#xff0c;却因不懂代码、不熟悉算法&#xff0c;难以将实际需求转化为可用的AI能力&#xff1b;一边是掌握专业开发技能的技术团队…...

Multisim仿真实战:石英晶体振荡器电路设计与性能调优

1. 石英晶体振荡器基础与Multisim入门 石英晶体振荡器是电子电路中常见的精密频率源&#xff0c;它的核心是一块经过特殊切割的石英晶体。当给晶体施加电压时&#xff0c;它会产生机械振动&#xff0c;这种振动又反过来产生电信号&#xff0c;形成稳定的振荡。我在实际项目中经…...

国产多模态新星:mPLUG-Owl全解析,从原理到落地

国产多模态新星&#xff1a;mPLUG-Owl全解析&#xff0c;从原理到落地 引言 在ChatGPT引爆文本大模型之后&#xff0c;多模态大模型正成为AI领域的下一个主战场。在这场全球竞赛中&#xff0c;国产模型的表现尤为引人注目。由阿里通义实验室推出的 mPLUG-Owl&#xff0c;凭借…...

【RS-M1系列-2】揭秘螺旋扫描:RS-M1如何重塑点云数据格局

1. 螺旋扫描&#xff1a;RS-M1的核心创新点 第一次拿到RS-M1的点云数据时&#xff0c;我就被它独特的螺旋扫描模式惊艳到了。与传统机械旋转式雷达那种"转圈圈"的扫描方式完全不同&#xff0c;RS-M1的5个激光通道通过一面振镜实现了螺旋状的扫描轨迹。这就像用五支笔…...

Nordic nRF52832蓝牙串口实战:手把手教你用SDK 15.3.0实现手机与设备双向通信

Nordic nRF52832蓝牙串口开发实战&#xff1a;从SDK配置到双向通信全解析 在嵌入式蓝牙开发领域&#xff0c;Nordic的nRF52832芯片凭借其优异的射频性能和丰富的外设资源&#xff0c;成为物联网设备开发的明星选择。但对于刚接触这款芯片的开发者来说&#xff0c;如何快速实现手…...