news 2026/1/29 20:37:39

CryptoJS AES 解密完整实战示例(Python + execjs)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CryptoJS AES 解密完整实战示例(Python + execjs)

本文通过一个完整、可运行的示例,演示如何在Python 中使用 execjs 调用 CryptoJS 实现 AES 解密
适合:接口逆向、数据采集、前端加密分析等场景。


一、最终效果说明

我们要实现的效果是:

  • 前端(JS)用CryptoJS AES-CBC加密 JSON
  • Python 通过execjs 调用 JS 解密
  • 最终在 Python 中拿到原始 JSON 数据

二、准备环境

1️⃣ 安装 Node.js

node-v

如果没有:

sudoaptinstallnodejsnpm

2️⃣ 安装 Python 依赖

pipinstallPyExecJS

3️⃣ 安装 CryptoJS(JS 依赖)

在项目目录下执行:

npminit -ynpminstallcrypto-js

三、项目目录结构

aes-demo/ ├── encrypt.js # (模拟前端)AES 加密 ├── decrypt.js # CryptoJS 解密函数 ├── decrypt.py # Python 调用 execjs └── cipher.txt # AES 密文

四、模拟前端 AES 加密(encrypt.js)

这一步是为了生成真实密文,方便你测试
实际项目中,这一步通常是网站前端完成的

constCryptoJS=require("crypto-js");constkey="1234567890abcdef";// 16 字节constiv="abcdef1234567890";// 16 字节constdata={user:"admin",age:18,role:"tester"};constplaintext=JSON.stringify(data);constencrypted=CryptoJS.AES.encrypt(plaintext,CryptoJS.enc.Utf8.parse(key),{iv:CryptoJS.enc.Utf8.parse(iv),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString();console.log(encrypted);

运行:

nodeencrypt.js>cipher.txt

此时cipher.txt中就是 AES 密文。


五、CryptoJS 解密函数(decrypt.js)

⚠️execjs 只能调用全局函数

constCryptoJS=require("crypto-js");functiondecryptData(key,iv,ciphertext){constdecrypted=CryptoJS.AES.decrypt(ciphertext,CryptoJS.enc.Utf8.parse(key),{iv:CryptoJS.enc.Utf8.parse(iv),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});returndecrypted.toString(CryptoJS.enc.Utf8);}

六、Python 调用 JS 解密(decrypt.py)

这是核心代码👇

importexecjsimportjsondefaes_decrypt(ciphertext):key="1234567890abcdef"iv="abcdef1234567890"withopen("decrypt.js","r",encoding="utf-8")asf:js_code=f.read()ctx=execjs.compile(js_code)plaintext=ctx.call("decryptData",key,iv,ciphertext)returnplaintextif__name__=="__main__":# 读取密文withopen("cipher.txt","r",encoding="utf-8")asf:cipher=f.read().strip()result=aes_decrypt(cipher)print("解密后的字符串:")print(result)print("\n解析为 JSON:")data=json.loads(result)print(data)

七、运行结果示例

解密后的字符串: {"user":"admin","age":18,"role":"tester"} 解析为 JSON: {'user': 'admin', 'age': 18, 'role': 'tester'}

解密成功


八、关键点总结(一定要看)

🔹 1. key / iv / mode / padding 必须一致

任何一个不一致,都会:

  • 解密为空字符串
  • JSON 解析失败

🔹 2. execjs 本质是「Python → Node」

所以:

  • Node.js 必须可用
  • crypto-js 必须能被require

🔹 3. 解密失败先不要json.loads

先:

print(result)

九、常见问题速查

❌ 解密结果为空

✔ key / iv 错
✔ AES 模式不一致
✔ padding 不一致


❌ 报错 Cannot find module ‘crypto-js’

npminstallcrypto-js

❌ execjs 报 RuntimeUnavailableError

说明Node.js 没装或不可用


十、适用场景

这个方案非常适合:

  • Web 接口 AES 逆向
  • 前端加密参数分析
  • Python 自动化解密
  • 不想手写 AES 算法
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/27 15:35:04

平面连杆机构动态仿真

2 7R六杆Ⅲ级机构运动学仿真 2.1 曲柄原动件运动学分析 2.1.1 曲柄原动件运动学数学模型的建立如图1所示,在复数坐标系中,曲柄AB复向量的模rj为常数、幅角θj为变量,通过转动副A与机架连接,转动副A的复向量的模ri为常量、幅角θ…

作者头像 李华
网站建设 2026/1/29 12:04:08

基于Simulink的PMSG风电系统自适应MPPT与转矩控制联合仿真

目录 手把手教你学Simulink 一、引言:为什么传统MPPT在复杂风况下“失灵”? 二、系统整体架构 控制闭环: 三、理论基础:自适应MPPT设计 1. 最优转矩控制原理 2. 自适应律设计(基于功率梯度) 3. 本文…

作者头像 李华
网站建设 2026/1/29 12:33:54

行业第一梯队!道可云AI元宇宙平台入选广电总台典型案例

在数字经济与实体经济深度融合的浪潮中,人工智能与元宇宙技术正成为驱动产业创新的核心引擎。 近日,工业和信息化部、文化和旅游部、国家广播电视总局、国家知识产权局、中央广播电视总台等五部门联合公布的2025年度视听系统典型案例名单中,…

作者头像 李华
网站建设 2026/1/29 16:58:18

7个顶尖AI论文工具推荐,LaTeX模板解决所有格式难题

工具快速对比(7大AI论文工具TOP排名) 这7款工具覆盖论文写作全流程,各有亮点: Aibiye:智能成文与无限改稿,适合初稿优化(��)。 Aicheck:一键生…

作者头像 李华
网站建设 2026/1/29 19:27:36

硕士文献综述写不出?试试这个高效工具:paperzz 文献综述

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 文献综述https://www.paperzz.cc/journalsReviewedhttps://www.paperzz.cc/journalsReviewed 每一位硕士研究生在论文写作的初期,都会被文献综述卡住。它要求你梳理几十篇文献&#…

作者头像 李华
网站建设 2026/1/28 11:05:26

导师推荐9个AI论文写作软件,自考学生轻松搞定毕业论文!

导师推荐9个AI论文写作软件,自考学生轻松搞定毕业论文! AI 工具如何让论文写作变得轻松高效 在自考学生群体中,毕业论文往往是一道难以逾越的难关。面对繁重的写作任务和时间压力,许多同学感到无从下手。而随着 AI 技术的不断进步…

作者头像 李华