我想加密一个消息在JavaScript(使用加密-js库),并在Java解密它。JavaScript的加密-java解密
这是JavaScript代码:
var key = CryptoJS.enc.Utf8.parse(aesPassword);
var ive = CryptoJS.enc.Utf8.parse(aesIv);
var encryptedData = CryptoJS.AES.encrypt(dataToEncrypt, key, {mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, iv: ive});
这是java代码:
final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
final SecretKeySpec key = new SecretKeySpec(aesPassword().getBytes("UTF-8"), "AES");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(aesIv().getBytes("UTF-8")));
byte[] decrypted = cipher.doFinal(DatatypeConverter.parseBase64Binary(message));
但是当我试图用Java来解密这个异常被抛出: javax.crypto.BadPaddingException :给定最终块未正确填充
密码:6h2faBePVxpgyFSN iv:NKOzRKrmEMKs1kE4 数据加密:“{token:cMGOIrYlJm9lPhPW}”
任何帮助吗?
在此先感谢
你确定它们兼容吗? – evolutionxbox
是的。在其他情况下,我使用java加密并使用javascript进行解密,并且工作正常 – Giamma
您的代码看起来正确。请[编辑]你的问题,包括你的钥匙和IV。您应该将密钥和IV的字节数组编码为十六进制,以在JavaScript和Java之间进行比较。 –