AgentSkillsCN

js2python

JS 转 Python 经验:加密算法转换、库对比、常见陷阱解析。 触发场景:将 JavaScript 加密逻辑迁移到 Python,或在爬虫开发中转而使用 Python 实现。

SKILL.md
--- frontmatter
name: js2python
description: |
  JS 转 Python 经验。加密算法转换、库对照、常见陷阱。
  触发:将 JS 加密转为 Python、爬虫需要 Python 实现。

JS 转 Python 经验

库对照表

JSPython用途
CryptoJSpycryptodomeAES/DES/MD5/SHA
JSEncryptrsa/pycryptodomeRSA
sm-cryptogmssl国密

常见陷阱

CryptoJS 字符串密钥: 会自动用 OpenSSL KDF 派生,Python 需手动实现。

编码差异: JS 自动 UTF-8,Python 需显式 .encode('utf-8')

填充方式: 确认 PKCS7/PKCS5 是否一致。

CFB 模式 segment_size: CryptoJS AES-CFB 默认 CFB128,PyCryptodome 默认 CFB8。必须指定 segment_size=128

降级策略

纯 Python 失败 3 次 → 改用 execjs 直接执行 JS。