HTTPS传输中,为什么加密后的数据在后端无法正确解密?
我在做前后端数据加密时遇到个怪问题:AES加密的数据通过HTTPS发送到后端,Java那边解密总报错,明明算法都用的AES-256-CBC…
前端用的是CryptoJS这样加密的:
const ciphertext = CryptoJS.AES.encrypt('敏感数据', '123456').toString();
fetch('/api', {body: ciphertext});
后端Java用的是:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.doFinal(Base64.getDecoder().decode(requestBody));
已经试过调整模式和填充方式,甚至换过密钥长度,但一直报 Given final block not correct size,这到底哪里不对啊?
后端解密时也要用相同IV:
记得key和IV都要16字节,别问我怎么知道的,踩过坑。