范闲获取到庆帝与神庙的往来信件,用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_bytes

def 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 decrypted
    except 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")}')
        break
    else:
        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加密算法的原理和实现过程,以及结合范闲破解庆帝与神庙往来信件的故事情节。范闲的成功解密,再次证明了科学技术在权谋斗争中的关键作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法-分治策略

概念 分治算法(Divide and Conquer)是一种解决问题的策略,它将一个问题分解成若干个规模较小的相同问题,然后递归地解决这些子问题,最后合并子问题的解得到原问题的解。分治算法的基本思想是将复杂问题分解成若干个较…

电源变压器的作用和性能

电源变压器的主要作用是改变输入电压的大小,通常用于降低电压或升高电压,以便适应不同设备的需求。它们还可以提供隔离,使得输出电路与输入电路之间电气隔离,从而提高安全性。性能方面,电源变压器需要具有高效率、低温…

二叉树-堆的详解

一,树的概念 1,树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有…

小学一年级数学上册,我终于学完了

目录 一、背景二、过程1.我对课程中的一些知识的思考2.我对于产品的思考3.我对自己儿子与知识产品结合的思考4.产品反馈的那些有意思的数据 三、总结 一、背景 简约而不简单,即是曾经的再现,也是未来的延伸,未来已来,就在脚下。 …

泛微开发修炼之旅--10基于Ecology实现附件上传,并将上传后的文件id存入表单附件控件中的示例及源码

文章链接:泛微开发修炼之旅--10基于Ecology实现附件上传,并将上传后的文件id存入表单附件控件中的示例及源码

微信如何防止被对方拉黑删除?一招教你解决!文末附软件!

你一定不知道,微信可以防止被对方拉黑删除,秒变无敌。只需一招就能解决!赶快来学!文末有惊喜! 惹到某些重要人物(比如女朋友),被删除拉黑一条龙,那真的是太令人沮丧了&a…

如何快速学习掌握PMP考试知识?

要快速学习掌握PMP考试知识,有几个关键的步骤和方法可以帮助大家有效地准备考试。 首先,建议你购买一本权威的PMP考试教材,例如PMBOK指南。这本教材是PMP考试的权威指南,包含了所有考试所需的知识点和内容。你可以通过系统地阅读…

Unity3D测量距离实现方法(一)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、Unity距离测量1-1 制作预制体1-2 编写测量的脚本 👉二、鼠标点击模型进行测量👉二、字体面向摄像机的方法👉二、最短距离测量方法👉三、壁纸分享…

【WP】猿人学_16_js逆向_window蜜罐

https://match.yuanrenxue.cn/match/16 抓包分析 荷载一个加密参数,一个时间戳 时间: 2024-06-07 15:52:31时间戳: 1717746751 1717746751000时间戳和现在对得上,直接生成就行。 追栈 追栈找m的生成位置。 点进去打断点,重新点击其他…

算法导论实战(三)(算法导论习题第二十四章)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀算法启示录 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 第二十四章 24.1-3 24.1-4 2…

【TB作品】MSP430G2553单片机,MSP430 单片机读取 SHT30 传感器并显示数据

使用 MSP430 单片机读取 SHT30 传感器并显示数据 作品功能 本文介绍了如何使用 MSP430 单片机读取 SHT30 温湿度传感器的数据,并通过 OLED 屏幕显示实时的温度和湿度信息。通过此项目,您将学习如何配置 MSP430 的 I2C 接口、读取 SHT30 传感器的数据以…

Linux 中常用的设置、工具和操作

1.设置固定的ip地址步骤 1.1 添加IPADDR“所设置的固定ip地址” TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no" BOOTPROTO"static" DEFROUTE"yes" IPV4_FAILURE_FATAL"no" IPV6INIT"yes" IPV6…

【Vue】作用域插槽

插槽分类 默认插槽:组件内定制一处结构 具名插槽:组件内定制多处结构 插槽只有两种,作用域插槽不属于插槽的一种分类。作用域插槽只是插槽的一个传参语法 作用: 定义slot 插槽的同时, 是可以传值的。给 插槽 上可以 绑定数据&a…

SOA主要协议和规范

Web服务作为实现SOA中服务的最主要手段。首先来了解Web Service相关的标准。它们大多以“WS-”作为名字的前缀,所以统称“WS-*”。Web服务最基本的协议包括UDDI、WSDL和SOAP,通过它们,可以提供直接而又简单的Web Service支持,如图…

外部mysql导入

利用这个命令&#xff1a; mysql -u username -p database_name < file.sql 然后就这样。成功导入。

Rocky Linux安装与基础配置

目录 背景与起源 主要特点 目标用户 发展前景 下载 安装 常用配置命令&#xff1a; 更换镜像源 Rocky Linux 是一个开源的、由社区驱动的操作系统&#xff0c;旨在使用 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源码构建的下游二进制兼容发行版。以下是关于…

vue3 监听器,组合式API的watch用法

watch函数 在组合式 API 中&#xff0c;我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数 watch(ref,callback&#xff08;newValue,oldValue&#xff09;&#xff0c;option:{}) ref:被监听的响应式量&#xff0c;可以是一个 ref (包括计算属性)、一个响应式…

Linux Mint 默认禁用未经验证的 Flatpak 软件包

Linux Mint 默认禁用未经验证的 Flatpak 软件包 Linux Mint 新政策 Linux Mint 项目宣布了一项新政策&#xff0c;即默认禁用那些未经官方验证的 Flatpak 软件包&#xff0c;以增强用户的安全保障。 当用户选择启用未经验证的 Flatpak 软件包时&#xff0c;Linux Mint 的软…

ceph radosgw 原有zone placement信息丢失数据恢复

概述 近期遇到一个故障环境&#xff0c;因为某些原因&#xff0c;导致集群原有zone、zonegroup等信息丢失&#xff08;osd&#xff0c;pool等状态均健康&#xff09;。原有桶和数据无法访问&#xff0c;经过一些列fix后修复&#xff0c; 记录过程 恢复realm和pool相关信息 重…

二轴机器人大米装箱机:技术创新引领智能包装新潮流

在科技日新月异的今天&#xff0c;自动化和智能化已成为各行各业追求高效、精准生产的关键。作为粮食加工行业的重要一环&#xff0c;大米装箱机的技术创新与应用价值日益凸显。其中&#xff0c;二轴机器人大米装箱机以其高效、稳定、智能的特点&#xff0c;成为市场的新宠。星…