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

【加密算法基础——AES CBC模式代码解密实践】

AES 解密实践之代码实现

AES 解密使用python脚本比较灵活,但是一定要保证脚本是调试过的,才能在找到正确的密文,密钥,初始向量的情况下,解出正确的明文。但是对于AES解密,命令行无法处理key截断的问题。
实际测试了一下,CBC模式,对于key截断的问题可以解决,但是CFB模式,目前还无法实验出可以解决key截断的问题。

1. CBC 模式代码展示

from Crypto.Cipher import AES
import base64
import binascii
import subprocessiv_hex = "42b7c8d0fedcc3b550fd74600c846d60"# 将 hex 转换为字节
iv = bytes.fromhex(iv_hex)key_hex = "4b3652534f4739562b554a324f3157434942374a424544353851584d3854514c"
key = binascii.unhexlify(key_hex)ciphertext_b64 = """qRARfftV7+r9rvtBRHlaW0o9QgNykFVhbI/alQHdZwfDHjDByAiZT59t2GmAvm/E
JGYuav4waz79J1M91Irdb/+iYGxu6ZnsfpXbvrSd6Ev32Z7Wn2uAmviCW43crWt3
UYktZZjvd+pJFHfu7nxxFCRv+OlEMNSCUzii7T/I6hFxI8E51X3unbBOiplPrKqp
evtnEENaCFcVAe/rDrKYQu4irkDQoBIeTCu4yODjIeEX9Ik6KDQCMvUiA2qKF2bG
az7Ept9xnpIsQslWeYGwvIJV3w1+4ZsFOi6rNsCxEoLx4dVq8r2OP5fFdklfL9c7
mnqQ0SAev1tgumG0tLX/pge7IghZKA8h6VZie74QXrTuDQ++w1nSVTO3YIH9zjx7
PWElAhVV/1TsjKZr6LpL2aou6tBxmQBiGo2BOYmuRFcuTGUK6pdS4qaYXbzM7vyp
g9/yjU9W+YBE+k3Wj7zJZDMVu0j0tWZqnmWkI/BFk5Rj/t/ikv/TbWnjtUw35VuC
t6bEv7i1zbzTWezV2OpRZaC7xRzenL8exn7TPJ5NC55ptww9+rp5q89Ltx+3n+YY
V+QkXZlTlBi1cl9LEwEJBVE68oGRcd32lhMdJHVIFhguG7ttFCTVw73MAbWNQRGU
+/4LLMzHFzPojC/B7MW2nQlXGd1GHhfTvv++4EODbKQu4wGTG2aI44EqPr8kJ/Pe
2amWCXsaG79E7FLV4isvVSVLNxdVjZ1tr++WwhuGI+KYOpDk+AxJ++B0MW3kgBXb
G5HoPBwbZmQtB570xPQ/di9HTfRzQohRW4PPn3tOKxZYQSnAkj+azihhsJJves7i
GnNiBORT1ML23x7b3URUs8nRkh+UTx3zYh4bxaOPTiN3GA8Z26vK2cBBsL3magj4
cbTAtR45H6LwwOGBImBVoYFEQlyoOfA301qdxdLAleI="""# 解码 Base64 编码的密文
ciphertext = base64.b64decode(ciphertext_b64)
#print("Ciphertext (decoded):", ciphertext)# 创建 AES-CFB 解密对象
cipher_decrypt = AES.new(key, AES.MODE_CBC, iv)# 解密
decrypted = cipher_decrypt.decrypt(ciphertext)# 打印解密结果
try:print("解密结果:", decrypted.decode('utf-8'))
except UnicodeDecodeError as e:print("Error decoding UTF-8:", e)# 将密文保存到文件
with open("ciphertext.b64", "w") as f:f.write(ciphertext_b64)# 将密钥和 IV 保存到文件
with open("key.bin", "wb") as f:f.write(key)
with open("iv.bin", "wb") as f:f.write(iv)# 使用 OpenSSL 命令行工具进行解密
subprocess.run(["openssl", "enc", "-aes-256-cbc", "-d", "-in", "ciphertext.b64", "-out", "decryptedtest.bin", "-base64", "-K", key_hex, "-iv", iv_hex
])

2. 结果

两种方式都能解出密文,但是命令行更靠谱一点,因为有可能出现key被截断后,代码可能无法成功解密的情况。

3. 解决方案

  • 尽可能使用OpenSSL命令行处理。

4. 总结

  • CBC 模式可能在某些情况下仍能产生可读输出,但这并不是安全的做法,避免截断密钥是最佳实践。

相关文章:

【加密算法基础——AES CBC模式代码解密实践】

AES 解密实践之代码实现 AES 解密使用python脚本比较灵活,但是一定要保证脚本是调试过的,才能在找到正确的密文,密钥,初始向量的情况下,解出正确的明文。但是对于AES解密,命令行无法处理key截断的问题。 实…...

【ViT+Dis】Deepfake Detection Scheme Based on Vision Transformer and Distillation

文章目录 Deepfake Detection Scheme Based on Vision Transformer and Distillationkey points深伪检测检测算法蒸馏法与教师网络实验训练:参数总结Deepfake Detection Scheme Based on Vision Transformer and Distillation 会议:2021 作者: key points 以往基于CNN结…...

maya-vray渲染蒙版

要用一个叫vrayMulWrapper的材质球,把alpha Conterbution调到-1,勾选matte surface启用蒙版物体。...

计网简简单单复习一下

文章目录 基础体系结构(分层模型)为什么要分层?OSI 七层模型?每一层的作用?TCP/IP 四层模型是什么?每一层的作用是什么?五层体系结构以及对应的协议每一层常见协议有哪些?从输入 URL 到页面展示到底发生了什么?URI和URL的区别;forward和redirect的区别DNS作用是什么?D…...

PyQt5-loading-圆环加载效果

效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…...

RabbitMQ Spring客户端使用

注解声明式队列和交换机 java自带序列化工具类,将java对象序列化为字节数组,用于网络传输。 jdk序列号存在缺陷,(不安全,占用空间大等) 推荐使用JSON的序列化: springboot扫描包使配置生效&…...

Arduino IDE离线配置第三方库文件-ESP32开发板

简洁版可以使用uget等,将文件下载到对应文件夹下,然后安装。 esp32之arduino配置下载提速 录屏 Arduino IDE离线配置第三方库文件ESP32 资源 Linux https://download.csdn.net/download/ZhangRelay/89749063 第三方开发板 非默认支持的开发板 linu…...

Node.js 安装及项目实践

node.js安装 node安装,选择版本 一直next,或者自己修改路径,添加两个包 选择自己的安装的node的路径,cmd或者winr cmd 显示node与npm的版本号 node -vnpm -v可以跟着这个博客将node安装 2024最新版Node.js下载安装及环境配…...

如何从混合信号中剔除某一信号——Schmidt正交化的使用(信号互相关)

本文仅用作方法记录,不讲详细原理和底层逻辑。 在面对混合的接收信号的情况下,例如接收信号: Y a 1 X 1 a 2 X 2 a 3 X 3 N Ya_1X_1a_2X_2a_3X_3N Ya1​X1​a2​X2​a3​X3​N 假设信号 X 1 X_1 X1​、 X 2 X_2 X2​、 X 3 X_3 X3​在时域和频域上…...

I2C/IIC学习笔记

I2C/IIC 有些同学I2C和IIC分不清,I2C和IIC实际上是指同一种通信协议。I2C是Inter-Integrated Circuit的缩写,而IIC是它的另一种表述方式,代表的是同一个意思,即“集成电路间总线”。I2C是一种由飞利浦公司(现恩智浦半…...

Servlet学习详解--基本涵盖所有Servlet知识点

目录 一、Servlet二、 Servlet入门2.1. 执行原理2.2. 实现Servlet接口重写其五个方法及其生命周期 三、Request请求对象3.1. 获取请求消息数据3.2. 获取请求头数据3.3. 获取请求体数据3.4. 设置编码3.5. 其他通用功能3.6. 请求转发(Forward)3.7. 转发共享数据 四、Response对象…...

LabVIEW机械手视觉引导系统

开发了LabVIEW软件和硬件工具开发的高精度机械手视觉引导系统。系统通过高效的视觉识别和精确的机械操作,提升工业自动化领域的生产效率和操作精度。 项目背景: 随着工业自动化的不断发展,对生产效率和精确度的要求也日益增高。传统的机械手…...

rabbitmq容器化部署

需求 容器化部署rabbitmq服务 部署服务 找到如下官网信息版本 官网版本发布信息 这里看到最新版本是3.13版本,这里在3.13中找一个版本下载容器镜像即可。 找到dockrhub.com中 找到3.13.2版本镜像。 容器服务安装此处省略 现在下载容器镜像需要配置容器代理 ~#…...

如何用 Helm Chart 安装指定版本的 GitLab Runner?

本分分享如何使用 Helm 来在 Kubernetes 集群上安装极狐GitLab Runner。整体步骤分为:Helm 的安装、vaules.yaml 文件的配置、Runner 的安装、Runner 的测试。 极狐GitLab 为 GitLab 在中国的发行版,中文版本对中国用户更友好。极狐GitLab 支持一键私有…...

el-table使用合计和固定列时,滚动条被覆盖区域无法拖拽问题

pointer-events文档 解决思路为通过pointer-events实现事件穿透,不响应固定列的拖拽,而是响应其子元素的拖拽事件 /deep/.el-table__fixed, /deep/.el-table__fixed-right {pointer-events: none; } /deep/.el-table__fixed *, /deep/.el-table__fixed-…...

【疑难杂症2024-005】docker-compose中设置容器的ip为固定ip后,服务无法启动

本文由Markdown语法编辑器编辑完成。 1.背景: 我们的产品是通过docker image的方式发布,并且编排在docker-compose.yml中发布。在同一个docker-compose.yml中的服务,相互之间,可以通过对方的服务名和端口,来直接访问…...

uView使用心得

说实话我不爱用这个库,感觉很鸡肋,坑很多,可能没用习惯 picker选择器 绑定默认值是通过设置index,并且这个index需要通过api设置进去,设置defalutindex绑定值无效(只有初始化可以,后面动态改变…...

RabbitMQ(高阶使用)死信队列

文章内容是学习过程中的知识总结,如有纰漏,欢迎指正 文章目录 一、什么是死信队列? 二、死信队列使用场景 三、死信队列如何使用 四、打车超时处理 1.打车超时实现 以下是本篇文章正文内容 一、什么是死信队列? 先从概念解释上搞…...

怎么安装docker-compose

使用下列命令下载docker-compose(可选择其他版本) wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 --no-check-certificate然后把该文件移动到/usr/local/bin/并重命名 mv docker-compose-linux-x86_…...

【机器学习】--- 自监督学习

1. 引言 机器学习近年来的发展迅猛,许多领域都在不断产生新的突破。在监督学习和无监督学习之外,自监督学习(Self-Supervised Learning, SSL)作为一种新兴的学习范式,逐渐成为机器学习研究的热门话题之一。自监督学习…...

用数字逻辑门复刻柏林钟:从二进制编码到硬件实现

1. 项目概述:用数字电路复刻“柏林钟”作为一个在柏林长大的孩子,我从小就对库达姆大街上的那座“柏林钟”着迷。它不像传统时钟那样用指针或数字告诉你时间,而是通过几排不同颜色的发光方块,以一种近乎艺术的方式呈现时间。这种独…...

MBTI性格测试

简介 MBTI(Myers‑Briggs Type Indicator,迈尔斯‑布里格斯类型指标)是基于荣格心理类型理论发展出的性格类型工具,由凯瑟琳库克布里格斯及其女儿伊莎贝尔布里格斯迈尔斯创建。它通过四对偏好维度将个体的认知与行为倾向归纳为 16…...

警惕!AI正在悄悄重构全球攻防格局

警惕!AI 正在悄悄重构全球攻防格局 热点聚焦 AI重构网络安全:全球巨头加速布局 2026年5月,全球网络安全领域迎来重大变革,AI技术正在重塑攻防格局。OpenAI发布专为网络安全防御打造的集成化AI平台Daybreak,将安全防…...

Burp Suite拦截与替换机制深度解析:从协议层到规则链

1. 这不是“点开就能用”的功能,而是你和目标系统之间的一道可编程闸门很多人第一次在Burp Suite里点开Proxy → Intercept,看到HTTP请求被拦下来,兴奋地改个User-Agent、删个Cookie就点Forward,以为自己已经掌握了“拦截与替换”…...

对比不同模型在创意生成任务中的效果与token消耗差异

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比不同模型在创意生成任务中的效果与token消耗差异 在为一场创意大赛准备素材时,我们面临一个常见的选择&#xff1a…...

3大技术突破:重新定义Switch游戏安装性能极限

3大技术突破:重新定义Switch游戏安装性能极限 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer Awoo Installer是一款专为破解版Nintendo…...

计算机视觉的实战项目:从0到1搭建属于自己的图像识别系统

作为软件测试从业者,我们每天都在和各类功能验证、兼容性测试、自动化测试框架打交道,对AI领域的实战项目往往觉得“门槛高”“和日常工作不沾边”。但随着AI技术在互联网产品中的落地越来越深入,图像识别功能已经成为很多APP、智能硬件的核心…...

你的差异基因结果可靠吗?用MetaVolcanoR给多个GEO数据集做一次‘交叉验证’吧

你的差异基因结果可靠吗?用MetaVolcanoR给多个GEO数据集做一次"交叉验证"当你在GEO数据库中下载了三个肺癌研究的差异表达结果,却发现三个DEG列表的重叠基因不到20%——这种令人沮丧的场景每天都在全球实验室上演。单项研究的差异分析结果就像…...

从Figma设计到Python GUI:Tkinter-Designer如何重塑可视化开发范式

从Figma设计到Python GUI:Tkinter-Designer如何重塑可视化开发范式 【免费下载链接】Tkinter-Designer An easy and fast way to create a Python GUI 🐍 项目地址: https://gitcode.com/gh_mirrors/tk/Tkinter-Designer 在Python GUI开发领域&am…...

eqMac终极指南:macOS系统级音频均衡器免费使用教程

eqMac终极指南:macOS系统级音频均衡器免费使用教程 【免费下载链接】eqMac macOS System-wide Audio Equalizer & Volume Mixer 🎧 项目地址: https://gitcode.com/gh_mirrors/eq/eqMac 你是否曾经觉得Mac电脑的音质不够理想?想要…...