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

Python调用JavaScript解密报错:如何解决execjs与crypto-js的兼容性问题?

心靈之曲
发布: 2025-03-10 11:40:15
原创
459人浏览过

python中调用javascript代码解密报错的原因分析及解决方案

本文针对在python中使用execjs运行javascript代码进行解密时遇到的报错问题进行分析,并提供解决方案。问题描述为:python代码调用javascript解密函数时,即使在python和javascript端都确认了参数类型和值没有问题,仍然出现解密错误。

代码片段中,python使用requests库获取加密数据,并使用execjs库执行名为decrypt.js的javascript解密脚本。decrypt.js使用crypto-js库进行aes解密,解密密钥为'rewin-swhysc1234'。报错信息提示为javascript运行错误,但具体原因不明。

问题可能出在以下几个方面:

  1. 字符编码问题: 尽管代码中已经设置了utf-8编码,但python和javascript之间的数据传输和处理过程中仍然可能存在编码不一致的情况。python端的response.content.decode('utf-8')可能未能正确解码响应内容,或者javascript端的crypto-js库对编码有特殊要求。 代码中注释掉的代码片段// @charset "utf-8";以及python代码中sys.stdout = io.textiowrapper(sys.stdout.buffer, encoding='utf-8')虽然意图良好,但可能并未完全解决问题,需要仔细检查所有涉及到字符串处理的环节。
  2. crypto-js库与python execjs的兼容性问题: execjs执行javascript代码的环境可能与crypto-js库的运行环境存在差异,导致解密函数无法正常工作。 建议尝试使用python原生库进行aes解密,从而避免兼容性问题。

提供一个基于python原生crypto库的aes解密函数:

OmniAudio
OmniAudio

OmniAudio 是一款通过 AI 支持将网页、Word 文档、Gmail 内容、文本片段、视频音频文件都转换为音频播客,并生成可在常见 Podcast ap

OmniAudio 111
查看详情 OmniAudio

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

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库来执行aes解密,避免了execjs和crypto-js库的兼容性问题。 需要注意的是,该函数假设密文是base64编码的。

此外,提供的建议图片显示了execjs库可能存在的问题,以及建议使用python原生库进行解密的提示。 这进一步佐证了使用python原生库进行aes解密的方案的可行性及可靠性。 通过替换原有的execjs调用,直接使用这个python的decrypt函数,可以有效解决报错问题。

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

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

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

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

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