0

0

解密 AES 加密的 JSON 文件:深入分析与实践

DDD

DDD

发布时间:2025-10-12 09:14:14

|

939人浏览过

|

来源于php中文网

原创

 解密 AES 加密的 JSON 文件:深入分析与实践

本文旨在深入探讨如何解密使用 aes 加密的 json 文件,重点分析了在缺乏初始化向量(iv)的情况下,如何通过现有的密钥和密文进行解密。我们将详细解析提供的 javascript 解密代码,并结合 python 示例,一步步指导读者完成 aes 解密过程,同时讨论可能遇到的问题和解决方案。

### 理解 AES 加密与 IV 的重要性 AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法。对称加密意味着加密和解密使用相同的密钥。在 AES 的多种工作模式中,CBC(Cipher Block Chaining)模式尤为常见。CBC 模式的一个关键组成部分是初始化向量(IV)。 IV 的作用是在加密第一个数据块时,提供一个随机的起始值,以确保即使使用相同的密钥加密相同的明文,也会产生不同的密文。这有助于防止攻击者通过分析密文的重复模式来破解加密。 如果缺少 IV,解密过程将无法正确启动,导致解密后的数据出现错误或完全无法识别。 ### 分析 JavaScript 解密代码 提供的 JavaScript 代码段 `Decryption.js` 包含了两个关键变量: - `decryptionAESKey`: 这是用于 AES 解密的密钥,以十六进制字符串形式表示。 - `decryptionSource`: 这是一个看似经过加密的字符串,其真实含义需要进一步分析。 `decryptionSource` 的长度为 4703 个字符,这对于 IV 来说过长。它更可能是一个经过某种形式加密的密文,或者包含 IV 在内的完整加密数据。 ### Python 解密尝试与问题诊断 提供的 Python 代码尝试使用 `cryptography` 库进行 AES 解密,但遇到了 `ValueError: The length of the provided data is not a multiple of the block length.` 错误。这个错误通常表示密文的长度不是 AES 块大小(16 字节)的整数倍。 此外,代码中缺少 IV,导致解密过程无法正确初始化。 ### 解决方案:假设与实践 基于现有的信息,我们可以做出以下假设: 1. `decryptionSource` 包含 IV 和密文的连接。 2. AES 使用 CBC 模式。 3. 数据可能使用了 PKCS7 填充。 根据这些假设,我们可以修改 Python 代码,提取 IV 并进行解密。 ```python from Crypto.Cipher import AES from Crypto.Util.Padding import unpad import binascii def aes_decrypt(encrypted_data, aes_key): """ 使用 AES-CBC 模式解密数据,并进行 PKCS7 解填充。 Args: encrypted_data (str): 十六进制编码的加密数据。 aes_key (str): 十六进制编码的 AES 密钥。 Returns: str: 解密后的 UTF-8 字符串。 """ # 解码十六进制编码的数据 decoded_data = binascii.unhexlify(encrypted_data) # 取前 16 字节作为 IV iv = decoded_data[:16] # 解码十六进制编码的 AES 密钥 key = binascii.unhexlify(aes_key) # 创建 AES cipher 对象,使用 CBC 模式 cipher = AES.new(key, AES.MODE_CBC, iv) # 解密数据并解填充 decrypted_data = unpad(cipher.decrypt(decoded_data[16:]), AES.block_size) return decrypted_data.decode('utf_8', errors='ignore') # 忽略无法解码的字符 # 示例数据 (替换成你的实际数据) encrypted_data = "40b6b8e3d1f7b7128ecc16eae4702ff707e619c027744b8c55717e265516356dcbc3029ee1748978c8b13100f5c57352bb1e641a9104f037df0d65765d97e1997200d0fc41437c054bd6551b0b65ee0d53ac344f02ed6eaea3c4d24b0b667270c4c11593e4877c4dfd78ded0b8f35d6ceafec6d80ddec24f1653bf74d0b441f98e07529100845f4bff00bf96efa5307913a3fe5c87636ff1039a153a2ecb7ddf34500210292421715e4e063bf185afc22b21693260b638a4a395c1a87c3cc047e9acc5f59a1ca3144064cb6617f07bb6b357c4fe7c6ccbf9afee97efabf19397f7251702a6258a7aa42b704b238d27260930ec02f9451601360341018d4e2c34eb52cade8cb9b46738c369a6324f2e9603961bf81fb14a34f1db1e6f0b550024fd82eb0cfe556578f7b4e8d110b4bb2071f221d9bb024016afb1e7b09751ace8332a739570ef159b865da5a4a599052c7a31bcdbe7c728fc78fdec634baa68fec24bc26cd306bb32b42d9e78b69eed8ff011e86730436027ec3a60fca7bdc363192a10c46353ba45dc1bd476c2d004746a506e4539fac1b456a4aa36063ada89f682e3cb20076130d4c7041e2fa8bf1867f4c257f453332a39efc2a4463b8da5a1509e9016623d047226e2e6fb90b53b11c28e24938a41e0c88441b687e372de74939f10f16b4c892ab99f390b827efa70bed165619e8be33c29211c1f0bc8122e0addde18bff2afa2b54409c33f36bb480552bb5d9d293eb1cc10b8cd1029fc08464b31c7ffe85a3bd0334782b2561e21d8df4208ea0390ab5d3ea5913bbdd822ca1d9e3d291e8953c3e7742d414616e3e49058a6fb984059f14346de6d13a138b710ad03c9a85f353142e1b9f731ea8f0b7df601d949339a7b917362177e03f89610f757c1564b6a8a4450ccbc8f0e7a1f1b33e6c5817724e2a8e0187e00a8b28cc0ad9a789ae38bba0104919806813cfbbdba5afe880fc074e7f57e9518c9a5293dee4dc69c402a652a660eb40f2c19ea5cdfc947a78205fc792423c40e20565c98f8b0e86a5c4928c018ffa269d99398a92d8259d4a29f98841caa1f7f38afd7973c98572411b7136b4b46c0071814e951c712acebff3dc65dd3d51be7714c6e2b687cf1d5d3bd6af32e53b90ebd7c5d189fd7e08790b20f1c9483ea296b4997c90396736c8d3f4f49f39e948bc083b1a17977a6996d53f0b2ea5b8afa591b13487903762d8ea90f334d0e3c6ae6c9fe6be1a0e820ff9185fc10d469c7945d2f67f24e87fe0efa81e3eab7e35df5a17f4fd29a1a0803d77f0d381f8ef169c75a59133ab9b527bff464d999c5cf2ee3e26588c19577ff8b118e507886c575d7bf34a8d55f79772a2aa64987ebc43dfa3b6790d20fa54a4c2344c9647d987f9da268573a1f7ecad3df5013eff514d3142a63b6636cfeb0f3731a2770c053f77fa839bff6cdc4a8d1da5ccc6457f23c6d1db958086b029170c54c4f2d8658589dad998860f8bcaa06a59345f754943fb78384253c077e91959ef6c7f0e1862ea4e67dad3fd5de4ccf99c215837619c9173ee9645c59100fc718ee8b95782af73d1f952898cedb653c9090f5941f5f440968a0dcf26fa3a5b73715f7f379b7d793a22559bb00107b5f346175f4aaf27e2eac1a6a35b21ab246fb68b1d48eb949aa71932cab58eaaffcd29965d9dd6e068f13d23cbde334ccb0aa0a0724a7dba6162b4487066605ae3148575cdc13523f06713aa2642e121ccea6c28c750428bc170e7486b6c255f50064dac1080d591b26289138705837188abb240a2c34e1a4293dd8f294c31d763d83ec0833cea4633e23a863cd3a700af99e1dd7781d8cb2088857ab9620af005aa267e75422e65a55a377b9af96008adab10ae73c7c1020e2d2d4406e54eb2f4270013537138c19c3b6795f8785eb66ef3b0dcdce56ed17a1022d0362a6c9e9be6c3b23667a51ae1fa8b8988602f56860cb90b00f38b82f3c1e1d101449c430ff77d9e38f30ed2704e8620419b28ced8d7933f0447c0e4e86a0678072c7dc3bf43adabd18bc5226bd7e1ec55bf1b779f227e54517252d919eee1ec6494fe3088235f8ac46b77888b6ebbf633da74371f0b9e014df6d4d993da3df5cf278205a43e468f48dca0faf1cc864ef8024aece48f36ded739b56deefd3380e2c851020f2ad80b6cef180fb2a24bbdf070e4d170c1a7a0eb4fdab1309cb2a4d3952ec58efc0c23696aa173de2ae878cd9fc1d6907f5542acea57786207c43859aecf1ca5715d78b3d92198434d83694960c1c4d7d8a23ca01af35fd6a5c98c38c0367b40cbb17559cc753d636ba94fe8ba6fc2635d27767dcef5f9b667cd94f843ec022e8195e9234e0c43801480d6f1be263572a5444cef4ac4c9f80a41e76c0012727e195776fa4b56834f447a11ff05f4092beb6ad234054b7164299b2e1e670407a280812794f2d1fbf7ad6342225f5be2537e13f5902b54d5bdaf19fa4ff535d44e03a9be57d91135119de28966320f449e97cc6fb807a6ed5d9f4bcc22d546af71d253b3cf00d4dd56393d68b25aff86c0893502c200257f3418a7e1241247629a3a9464b415ffd1d7d6862b4f00fcb2669e943b9e157862bf71f2d5156a40bc91e26dbe6482090a03a324220c79c1f9c3b7c7f932c6d6407cb8fce7b5a67221a2c93aedf78d7eb69ba88862e31e92b2d5c7e8eee17bffd108bc46b94997590d94248d5440648baefebc37564facaa01047ebeeab15f90eff18111e8fc890231d3ba3d1214b0b797f9cf688f06a2b9e006de65846a01fd4bbaa290091d0b41b11179f31063a947a1778ed0f80931d66281e42a43f8a57ce31983c71d11e1c8cffd9a55c6987b3ca1c2cafafa0d3e0d21668477de5d4bac263c2d3828c5c55888033efedceb68885cc3e87a2a437875e8852d1445b660abe43555465713b57f694fe412183a0a809ad57e1805a11cc68a7f07b77c2e58581de2eb97741a3e34682437584f129894abd914effcb01d694e71046e3efa453386f08a283743adcfdcbf07ebb96e5a43c3c930f20ae977e0493ed28016085f99d9c6e9164dc4ba1cba17a7cdf121c885fa8cea686a7c4160df73185fb9067079fcd865a40c39c43c690e1b2c39a51aa18fc4ef4b269edc01fc1654b96e065de53fccf9ca933aa3134bb627511068e1caf24454a47ed92dd56122ce25786e8a38f31a42d766c6bd241410e36172b4722c84065c1bf3261aa587d1d5374f4bf6a96791cddc74ab97f32533ea487710dabcd17ce6160380eef91918e70dac3268301461013a255e8aa593d005db3b893db20c5cca8feb5af813f07ec603dd02f3414ed2a4" aes_key = "02f3ffa287f78ba68c60f24f79c6fb18ce32b4ebaadac11af5ace8c67a50ae9f" # 解密并打印结果 decrypted_result = aes_decrypt(encrypted_data, aes_key) print("解密后的数据:", decrypted_result)

代码解释:

  1. 导入库: 导入 Crypto.Cipher 用于 AES 加密,Crypto.Util.Padding 用于解填充,binascii 用于十六进制编码转换。
  2. aes_decrypt 函数:
    • 接受十六进制编码的加密数据和 AES 密钥作为输入。
    • 使用 binascii.unhexlify 解码十六进制字符串为字节数据。
    • 从解码后的数据中提取前 16 字节作为 IV。
    • 使用 AES.new 创建 AES cipher 对象,指定密钥、CBC 模式和 IV。
    • 使用 unpad 函数解填充数据,确保数据长度是块大小的倍数。
    • 使用 decode('utf_8', errors='ignore') 将解密后的字节数据解码为 UTF-8 字符串,并忽略无法解码的字符。
  3. 示例数据: 替换 encrypted_data 和 aes_key 为实际值。
  4. 调用函数并打印结果: 调用 aes_decrypt 函数解密数据,并打印解密后的结果。

注意事项:

  • 确保安装了 pycryptodome 库: pip install pycryptodome
  • errors='ignore' 参数用于处理解密后可能出现的乱码,这可能是由于数据损坏或错误的密钥导致的。
  • 如果解密后的数据仍然无法识别,请检查密钥是否正确,以及加密过程中是否使用了其他编码或压缩方式。

进一步分析与问题解决

即使使用了上述方法,仍然可能遇到问题,例如:

  • 数据损坏: 密文可能在传输或存储过程中损坏,导致解密失败。
  • 错误的密钥: 密钥可能不正确,或者与加密时使用的密钥不匹配。
  • 其他加密模式或填充方式: 可能使用了其他的 AES 工作模式(如 ECB、CFB 等)或填充方式(如 ZeroPadding)。

解决建议:

百宝箱
百宝箱

百宝箱是支付宝推出的一站式AI原生应用开发平台,无需任何代码基础,只需三步即可完成AI应用的创建与发布。

下载
  • 检查数据完整性: 确保密文的完整性,例如通过哈希校验。
  • 验证密钥: 仔细检查密钥是否正确,并尝试使用不同的密钥。
  • 尝试不同的解密参数: 尝试不同的 AES 工作模式和填充方式。
  • 分析解密后的数据: 即使解密后的数据看起来是乱码,也可能包含一些有用的信息,例如文件头或特定的标记。

总结与展望

解密 AES 加密的 JSON 文件需要深入理解 AES 加密原理、熟悉相关的解密工具和技术,并进行细致的分析和调试。在缺乏 IV 的情况下,需要做出合理的假设,并进行验证。

本文提供了一种基于现有信息的解密方案,并讨论了可能遇到的问题和解决方案。希望读者能够通过本文的学习,掌握 AES 解密的基本方法,并能够解决实际遇到的问题。

未来的研究方向包括:

  • 开发更智能的解密工具,能够自动识别加密模式和填充方式。
  • 研究针对特定加密算法的破解技术。
  • 加强数据安全意识,避免在缺乏必要安全措施的情况下存储敏感数据

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

455

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

335

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

373

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

436

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

803

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

370

2025.07.23

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 6万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号