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

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

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

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

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

字符编码问题: 尽管代码中已经设置了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’)虽然意图良好,但可能并未完全解决问题,需要仔细检查所有涉及到字符串处理的环节。crypto-js库与python execjs的兼容性问题: execjs执行javascript代码的环境可能与crypto-js库的运行环境存在差异,导致解密函数无法正常工作。 建议尝试使用python原生库进行aes解密,从而避免兼容性问题。

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

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

from Crypto.Cipher import AESimport base64def decrypt(ciphertext):    key = b'rewin-swhysc1234'    cipher = AES.new(key, AES.MODE_ECB)    plaintext = cipher.decrypt(base64.b64decode(ciphertext))    return plaintext.decode('utf-8')

登录后复制

本文来自互联网或AI生成,不代表软件指南立场。本站不负任何法律责任。

如若转载请注明出处:http://www.down96.com/tutorials/4151.html

热心网友热心网友
上一篇 2025-04-11 14:54
下一篇 2025-04-11 14:54

相关推荐

本站[软件指南]所有内容来自互联网投稿或AI智能生成,并不代表软件指南的立场。