我想加密一個消息在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之間進行比較。 –