首页 > web前端 > js教程 > 正文

Python调用JS解密代码报错:如何排查execjs与crypto-js库的兼容性问题?

霞舞
发布: 2025-03-13 18:58:11
原创
799人浏览过

python调用js解密代码报错:如何排查execjs与crypto-js库的兼容性问题?

Python调用JS解密代码报错的排查与解决

在使用Python调用JavaScript代码进行解密时,即使参数正确,也可能遇到execjs.ProgramError。本文分析一个案例,并提供解决方案。

问题描述:

程序使用execjs库执行一段使用crypto-js库进行AES解密的JavaScript代码。尽管设置了UTF-8编码,但仍出现execjs.ProgramError。

立即学习Python免费学习笔记(深入)”;

Python代码片段:

import requests
import execjs
import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

# ... (requests代码省略) ...

try:
    response_text = response.content.decode('utf-8')
    decrypted_text = execjs.compile(open('./decrypt.js', 'r', encoding='utf-8').read()).call('decrypt', response_text)
    print("解密结果:", decrypted_text)
except execjs.ProgramError as e:
    print(f"JavaScript错误: {e}")
# ... (其他异常处理省略) ...
登录后复制

JavaScript代码片段:

const CryptoJS = require('crypto-js');

function decrypt(t) {
    let key = 'rewin-swhysc1234';
    let keyBytes = CryptoJS.enc.Utf8.parse(key);
    let decrypted = CryptoJS.AES.decrypt(t, keyBytes, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return decrypted.toString(CryptoJS.enc.Utf8);
}
登录后复制

问题分析与解决方案:

问题可能源于execjs与crypto-js的兼容性,以及execjs处理加密数据的限制。execjs并非直接运行JavaScript,而是通过Node.js等引擎,这可能导致兼容性问题。

建议:使用Python原生加密库替代execjs和crypto-js。 Python的Crypto库提供AES加密解密功能,避免兼容性问题。

Python原生加密库解决方案:

from Crypto.Cipher import AES
import base64

def decrypt(ciphertext):
    key = b'rewin-swhysc1234'
    cipher = AES.new(key, AES.MODE_ECB)
    plaintext = cipher.decrypt(base64.b64decode(ciphertext))
    return plaintext.decode('utf-8')
登录后复制

此Python函数使用Crypto.Cipher.AES进行AES解密,并用base64处理Base64编码的密文。这更直接高效,避免兼容性问题。

额外注意事项:

  • 输入参数校验: JavaScript代码应增强输入参数t的校验,避免空值或格式错误导致解密失败。
  • 异常处理: 完善Python代码的异常处理,例如处理base64.b64decode可能抛出的异常。

通过使用Python原生加密库,可以提高代码效率和稳定性,并解决execjs和crypto-js兼容性问题。 记住始终对输入数据进行严格的验证和处理,以确保程序的健壮性。

以上就是Python调用JS解密代码报错:如何排查execjs与crypto-js库的兼容性问题?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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