直接贴代码,自己看
# 你的参数
KEY = "258570560xxxxxxx"
CIPHERTEXT = "U2FsdGVkX19Xnv7Z******/d3FC6Hakd8ZnEhCdGg="
def decrypt_cryptojs_aes(encrypted_base64, password):
encrypted = base64.b64decode(encrypted_base64)
# 分离 Salted__ 前缀 + salt
if encrypted[:8].decode('ascii') != 'Salted__':
raise ValueError("不是 CryptoJS 标准加密")
salt = encrypted[8:16]
data = encrypted[16:]
# 密钥 + IV 推导(完全复刻 CryptoJS)
def evp_kdf(password, salt, key_len=32, iv_len=16):
d = i = b''
while len(d) < key_len + iv_len:
md5 = hashlib.md5()
md5.update(i + password.encode('utf-8') + salt)
i = md5.digest()
d += i
return d[:key_len], d[key_len:key_len + iv_len]
key, iv = evp_kdf(password, salt)
cipher = AES.new(key, AES.MODE_CBC, iv)
# 解密 + 去填充
decrypted = cipher.decrypt(data)
return unpad(decrypted, AES.block_size).decode('utf-8')
# 执行解密
result = decrypt_cryptojs_aes(CIPHERTEXT, KEY)
print("解密结果:", result)
就是一个标准的aes加密算法,js代码是这样的
// 安装依赖:npm install crypto-js
const CryptoJS = require('crypto-js');
// 你的参数
const key = '258570560xxxxxxx';
const ciphertext = 'U2FsdGVkX19Xnv7Z******/d3FC6Hakd8ZnEhCdGg=';
// 解密(完全匹配你提供的调用逻辑)
const result = CryptoJS.AES.decrypt(ciphertext, key).toString(CryptoJS.enc.Utf8);
console.log('解密结果:', result);
用的时候替换对应的值即可
正文完