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

news2024/11/17 13:45:37

关注微信公众号 数据分析螺丝钉 免费领取价值万元的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加密算法的原理和实现过程,以及结合范闲破解庆帝与神庙往来信件的故事情节。范闲的成功解密,再次证明了科学技术在权谋斗争中的关键作用。

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

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

相关文章

jvm学习笔记(二) ----- 垃圾回收

GC 一、判定对象是否是垃圾1.引用计数法2.可达性分析算法 二、垃圾回收算法1.标记清除2.标记整理3. 复制4. 分代垃圾回收1.尝试在伊甸园分配2.大对象直接晋升至老年代3.多次存活的对象4.老年代连续空间不足,触发 Full GC 链接: jvm学习笔记(一) ----- JAVA 内存 链接…

20240607每日通信--------VUE3前端引入scoket-io,后端引入Netty-SocketIO,我成功了,希望一起交流沟通

无语 前置: VUE3 前端集成scoket-io socket.io-client Sringboot 3.0JDK17集成Netty-SocketIO Netty-SocketIO 失败原因一: 前期决定要写demo时候,单独了解了,后端引入Netty-SocketIO注意事项,详见我先头写的博客 前…

别让你的品牌失去声音,品牌策划如何成为你的王牌?

品牌策划可不仅仅是一个简单的概念,它是一门真正的艺术和科学。 它涉及到在确立品牌定位之后,进行一系列精心设计的传播和推广活动,从而塑造和管理品牌,让品牌价值达到最大化。 在这个竞争激烈的市场中,想要让你的品…

一篇文章带你搞懂C++引用(建议收藏)

引用 6.1 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 比如:李逵,在家称为"铁牛",江湖上人称&quo…

30、matlab现代滤波:维纳滤波/LMS算法滤波/小波变换滤波

1、信号1和信号2的维纳滤波 实现代码 N 2000; %采样点数 Fs 2000; %采样频率 t 0:1 / Fs:1 - 1 / Fs; %时间序列 Signal1 sin(2*pi*20* t) sin(2*pi*40* t) sin(2*pi*60* t); Signal2[2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1…

删除目录

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 删除目录可以通过使用os模块提供的rmdir()函数实现。通过rmdir()函数删除目录时,只有当要删除的目录为空时才起作用。rmdir()函数的基本语…

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

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

算法金 | 不愧是腾讯,问基础巨细节 。。。

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 最近,有读者参加了腾讯算法岗位的面试,面试着重考察了基础知识,并且提问非常详细。 特别是关于Ada…

Linux守护进程揭秘-无声无息运行在后台

在Linux系统中,有一些特殊的进程悄无声息地运行在后台,如同坚实的基石支撑着整个系统的运转。它们就是众所周知的守护进程(Daemon)。本文将为你揭开守护进程的神秘面纱,探讨它们的本质特征、创建过程,以及如何重定向它们的输入输出…

vue2实现将el-table表格数据导出为长图片

方法一、 el-table数据导出为长图片 将el-table数据导出为图片不是一个直接的功能,但可以通过以下步骤实现: 使用html2canvas库将表格区域转换为画布(canvas)。 使用canvas的toDataURL方法将画布导出为图片格式(例如PNG)。 创建…

人工智能时代,想转型AI产品经理?这篇文章你不应该错过

前言 在这个日新月异的智能时代,人工智能(AI)已经从未来概念转变为推动各行各业发展的核心驱动力。作为连接技术与市场的桥梁,AI产品经理的角色愈发关键,他们不仅是技术的翻译者,更是创新的推动者。如果你…

ORA-12519 TNS:no appropriate service handler found

问题描述 jdbc连接Oracle失败,报错日志如下: Listener refused the connection with the following error: ORA-12519, TNS:no appropriate service handler found The Connection descriptor used by the client was:192.9.100.217:7001:wcm 问题分…

重新学习STM32(2)NVIC

概念简介 NVIC,即嵌套向量中断控制器,控制着中断相关的功能,是内核里面的一个外设。 中断在单片机编程中的作用是使单片机能及时响应需要立即处理的事件,但是这些事件也分紧急和非紧急,因此需要优先级来区分。…

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

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

Cadence Virtuoso IC617 系统内存清理

1、清空simelation和垃圾箱下的文件 2、在虚拟机磁盘路径下,例如/home下面输入后,回车,等待进程走完,虚拟机关机。 cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill 3、在windows下winR ->cmd 找到VMware安…

代码随想录算法训练营第十五天| 110.平衡二叉树、 257. 二叉树的所有路径、404.左叶子之和

110.平衡二叉树 题目链接:110.平衡二叉树 文档讲讲:代码随想录 状态:还可以 思路:计算左右子树的深度差,递归判断左右子树是否符合平衡条件 题解: public boolean isBalanced(TreeNode root) {if (root n…

【UML用户指南】-10-对高级结构建模-高级类

目录 1、类目 2、高级类 3、可见性 4、实例范围和静态范围 5、抽象元素、叶子元素和多态性元素 6、多重性 7、属性 8、操作 9、模板类 10、标准元素 1、类目 类目 (classifier)是描述结构特征和行为特征的机制。类目包括类、关联、接口、数据类…

6月26~28日,2024北京国际消防展即将开幕!

随着社会的快速发展,消防安全日益受到广大民众的高度关注。为了进一步推动消防科技的创新与发展,提升全民消防安全意识,2024年北京消防展将于6月26日在北京国家会议中心盛大开展。目前:观众预登记已全面启动,广大市民和业界人士可…

第九篇——冗余量:《史记》和《圣经》那个信息量大?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 通过信息量的对比,引出来冗余度的概念,又深入浅出…

[职场] 项目实施工程师的工作前景 #笔记#经验分享

项目实施工程师的工作前景 项目实施工程师是负责将软件产品或解决方案实施到客户现场并确保项目成功落地的工作岗位。他们要负责整个项目的规划、组织、执行和控制,确保项目按照预定的进度、质量和预算完成。 一.工作内容 1. 项目规划:确定…