范闲获取到庆帝与神庙的往来信件,用AES进行破解

关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业分析/数据结构与算法学习资料

在《庆余年2》中,范闲与庆帝和神庙之间的权谋斗争愈演愈烈。一次偶然的机会,范闲从庆帝的密室中获取到几封与神庙往来的密信。然而,这封信件被加密处理,内容为“Ciphertext: d1e92b9c2d1e9a0f3b0f1e2c9a4b9c7d”,无法直接读取什么意思。范闲与五竹叔一起看这封信的内容,怀疑是皇帝与神庙的秘密阴谋。五竹一看发现是128位,猜测是MD5加密或者AES,决定通过python进行尝试解密。但是MD5发现在这里没法解密,所以尝试用AES
在这里插入图片描述

AES算法简介

在这里插入图片描述

AES(Advanced Encryption Standard)是一种对称密钥加密算法,用于保护数据。它被广泛认为是高效且安全的加密标准。AES支持128位、192位和256位的密钥长度,常用于数据加密传输和存储。但是它主要是通过秘钥的传递进行加解密

AES算法的原理

AES算法包括以下几个主要步骤:
密钥扩展:生成一组密钥,称为轮密钥,用于各轮的加密和解密操作。
初始轮:将明文与初始轮密钥进行异或操作。
轮变换:进行若干次轮变换,每次轮变换包括以下四步:

  • 字节代替(SubBytes):使用S盒替换字节,通过非线性替换增强安全性。
  • 行移位(ShiftRows):对状态矩阵的行进行循环移位,增加混淆性。
  • 列混合(MixColumns):混合状态矩阵的列,通过线性变换进一步混淆数据。
  • 轮密钥加(AddRoundKey):将当前状态与轮密钥进行异或操作,增加复杂性。

最终轮:与轮变换类似,但不进行列混合操作,最终输出密文。

范闲的解密过程

庆帝安排了一个假范闲去马车上,这个信息马上检察院发现,范闲在想与信件的内容会不会有什么关联
在这里插入图片描述

范闲把从信件中截取的密文,并使用AES算法进行解密。详细思考了一下可能的秘钥,接着他老师的话点醒了他,知道庆帝可能想利用他引诱五竹,所以秘钥很可能是他的名字:
在这里插入图片描述
秘钥用 范闲的名字带入进行解密,并且他猜测,庆帝之前已经跟神庙有过勾结,可能也学会了现代的知识,比如拼音、英语和算法,所以他在解密的时候也大胆假设。

Ciphertext: d1e92b9c2d1e9a0f3b0f1e2c9a4b9c7d  # 密文内容

获取密钥:范闲通过蛛丝马迹,推测出庆帝可能使用的加密密钥。
解密操作:范闲使用推测出的密钥和加密消息进行解密操作。

from Cryptodome.Cipher import AES
from Cryptodome.Util.Padding import unpad
from Cryptodome.Random import get_random_bytesdef aes_decrypt(iv, ciphertext, key):try:# 创建AES解密对象cipher = AES.new(key, AES.MODE_CBC, iv=iv)# 解密并返回明文decrypted = unpad(cipher.decrypt(ciphertext), AES.block_size)return decryptedexcept Exception as e:return None# 已知的密文和初始化向量(IV)
ciphertext = bytes.fromhex('d1e92b9c2d1e9a0f3b0f1e2c9a4b9c7d')
iv = bytes.fromhex('1a2b3c4d5e6f7g8h')# 候选密钥列表
key_candidates = ['qingdi', 'wuzhu', 'qingshi', 'xiyin', 'fanxian', 'siguo']
# 将字符串编码为字节并填充或截断为16字节(128位)
keys = [key.encode('utf-8').ljust(16, b'\0')[:16] for key in key_candidates]# 尝试用所有候选密钥进行解密
for key in keys:decrypted = aes_decrypt(iv, ciphertext, key)if decrypted:print(f'Key: {key.decode("utf-8")}, Decrypted: {decrypted.decode("utf-8")}')breakelse:print(f'Key: {key.decode("utf-8")}, Failed to decrypt.')

输出示例

Key: qingdi, Failed to decrypt.
Key: wuzhu, Failed to decrypt.
Key: qingshi, Failed to decrypt.
Key: xiyin, Failed to decrypt.
Key: fanxian, Decrypted: kill wuzhu
Key: siguo, Failed to decrypt.

通过AES加密算法,范闲成功解密了庆帝与神庙的往来信件,揭示了隐藏在密文背后的重要信息。
解密后的内容:

Decrypted message: kill wuzhu

这封信件详细说明了庆帝与神庙之间的秘密计划,给范闲提供了关键证据,接着他马上通知五竹有危险,然后五竹做了充分的准备,在大战神庙使者的时候轻松获胜。
在这里插入图片描述

结论

通过详细介绍AES加密算法的原理和实现过程,以及结合范闲破解庆帝与神庙往来信件的故事情节。范闲的成功解密,再次证明了科学技术在权谋斗争中的关键作用。

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

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

相关文章

美团面试:百亿级分片,如何设计基因算法?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的架构类/设计类的场景题: 1.说说分库分表的基因算法&#xff1f…

使用matplotlib绘制折线条形复合图

使用matplotlib绘制折线条形复合图 介绍效果代码 介绍 在数据可视化中,复合图形是一种非常有用的工具,可以同时显示多种数据类型的关系。在本篇博客中,我们将探讨如何使用 matplotlib 库来绘制包含折线图和条形图的复合图。 效果 代码 imp…

【Linux】进程2——管理概念,进程概念

1.什么是管理? 那在还没有学习进程之前,就问大家,操作系统是怎么管理进行进程管理的呢? 很简单,先把进程描述起来,再把进程组织起来! 我们拿大学为例子 最典型的管理者——校长最典型的被管理…

短视频矩阵源码----如何做正规开发规则分享:

一、什么是SaaS化服务技术开发? (短视频矩阵系统是源头开发的应该分为3个端口---- 总后台控制端、总代理端口,总商户后台) SaaS是软件即服务(Software as a Service)的缩写。它是一种通过互联网提供软件应…

MySQL查询相邻两条记录的时间间隔

MySQL查询相邻两条记录的时间间隔。最近需要统计相邻两条记录的时间间隔,筛选出时间间隔大于2min的数据记录。因为是同一张表,又需要查询出相邻的数据,所以最开始想到使用子表来做,分别用t1、t2表示,但是实践后发现查询…

如何查看本地sql server数据库的ip地址

程序连线SQL数据库,需要SQL Server实例的名称或网络地址。 1.查询语句 DECLARE ipAddress VARCHAR(100) SELECT ipAddress local_net_address FROM sys.dm_exec_connections WHERE SESSION_ID SPID SELECT ipAddress As [IP Address]SELECT CONNECTIONPROPERTY(…

鸢尾花分类和手写数字识别(K近邻)

鸢尾花分类 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import pandas as pd import mglearn# 加载鸢尾花数据集 iris load_iris() X_train, X_test, y_train, y_test train_test_split(iris.data,iris.target,test_siz…

【Linux】Centos7升级内核的方法:yum更新(ELRepo)

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…

路径

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 用于定位一个文件或者目录的字符串被称为一个路径。在程序开发时,通常涉及两种路径,一种是相对路径,另一种是绝对…

Intel VT-x怎么开启?如何解决VMware打开虚拟机报错问题?

许多小伙伴在安装完VMware不能打开虚拟机,每次打开都会出现一个“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的报错,然后因此启动不了虚拟机。今天小编就带来如何解决这个报错的方法。 什么是Intel VT-x? 这是英特尔cp…

黑龙江等保测评流程

黑龙江的等保测评过程是一个系统严谨的过程,目的在于保证信息系统的安全与机密性符合国家规定的要求。下面将详细介绍黑龙江等保测评的流程: 一、定级与备案 首先,企业要依据自身的业务特点、信息系统的重要性和所承载的信息的敏感程度&…

【Text2SQL 论文】C3:使用 ChatGPT 实现 zero-shot Text2SQL

论文:C3: Zero-shot Text-to-SQL with ChatGPT ⭐⭐⭐⭐ arXiv:2307.07306,浙大 Code:C3SQL | GitHub 一、论文速读 使用 ChatGPT 来解决 Text2SQL 任务时,few-shots ICL 的 setting 需要输入大量的 tokens,这有点昂贵…

玩转微服务-GateWay

目录 一. 背景二. API网关1. 概念2. API网关定义3. API网关的四大职能4. API网关分类5. 开源API网关介绍6. 开源网关的选择 三. Spring Cloud Gateway1. 文档地址2. 三个核心概念3. 工作流程4. 运行原理4.1 路由原理4.2 RouteLocator 5. Predicate 断言6. 过滤器 Filter6.1. 过…

Docker的网络管理

文章目录 一、Docker容器之间的通信1、直接互联(默认Bridge网络)1.1、Docker安装后默认的网络配置1.2、创建容器后的网络配置1.2.1、首先创建一个容器1.2.2、ip a 列出网卡变化信息1.2.3、查看新建容器后的桥接状态 1.3、容器内安装常见的工具1.4、容器间…

Spring Cloud系列——使用Sentinel进行微服务保护

文章目录 一、引言1. 雪崩问题的产生原因2. 解决雪崩问题的思路 二、微服务保护1. 服务保护方案1.1 请求限流1.2 线程隔离1.3 服务熔断 2. Sentinel2.1 安装2.2 微服务整合2.2.1 请求限流2.2.2 线程隔离①OpenFeign整合Sentinel②配置线程隔离 2.2.3 服务熔断①编写降级逻辑②配…

路由器重启真的好吗?多久重启一次更好?

前言 小白前段时间发现自己家的OpenWRT软路由上网特别慢,有时候通话还有点卡顿。 然而有个朋友用的普通路由器也有类似的问题,而且有时候根本上不去网。 解决的办法很简单:重启路由器。 重启路由器? 但路由器重启是真的好吗&a…

Android无障碍服务

Hi I’m Shendi Android无障碍服务 最近想制作一个记录点击操作并重复播放的工具,用以解放双手,因现在的Android高版本基本上难以Root,所以选择了使用无障碍来实现,在这里记录下来。 Android无障碍 可参考文档:https:…

Linux网络编程:网络层协议|IP

目录 前言: 1.IP协议 1.1.IP协议格式 1.2.网段划分 1.2.1.知识引入 1.2.2.IP地址划分和子网掩码 1.3.IP地址分类 1.3.1.特殊IP地址 ​编辑 1.3.2.私有IP和公网IP 1.3.3.浅谈NAT技术 1.4.路由 1.4.1.什么是路由 1.4.2.路由表 1.5.网络层数据切片和组装…

升级最新版openssh-9.7p1及openssl-1.1.1h详细步骤及常见问题总结

近期因为openssh相继被漏洞扫描工具扫出存在漏洞,所以考虑升级操作系统中的openssh和openssl为最新版本,来避免漏洞风险。期间的升级过程及遇到的疑难问题,特此记录下来,供有需要的人参考。 本次目标是升级 openssh 为 9.7p1 版本…

千问Qwen7B chat:本地部署及网页端使用

基于前面的安装经验,千问大模型的本地部署并不算难,主要时间用在大模型文件的下载上。同时系统运行对硬件也有较高的要求,本机的硬件配置为N卡3060,显存12G。 使用conda创建虚拟环境,主要版本如下: Pyth…