前后端对接,多语言实现 CryptoJS 的 AES 简单加密解密
前言
在逆向某个网站接口时,发现的其参数使用了 CryptoJS 的 AES 简单加密,只需要两个参数,而在使用其他语言解密时却无法复现
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
折腾了好久,查阅了多篇文章,终于解决
为什么要用多语言实现?因为参考的文章使用的是 Go ,自己测试的时候为了方便用 Python,最后的业务用的是 Java
解密思路
解密时会出现第一个问题:AES 的秘钥长度是固定的,而 CryptoJS.AES 的 passphrase 却是随意长度
首先,在 得知 CryptoJS 的 AES 简单加密默认使用 aes-256