パスワードの暗号化と復号化のために、アプリで以下のコードを使用していました。突然失敗することに気付くまで、正常に動作していました。私が覚えている唯一の変更は、数日前にADTとEclipseを最新バージョンに更新することです。なぜそれが今失敗しているのか分かりません。新しい暗号化を作成すると機能します。しかし、以前に生成された暗号化されたパスワードを使用し、それを以下のコードに渡して復号化すると、エラーが発生します。「byte[] plainBytes = cipher.doFinal(cipherBytes);」という行で失敗しています。
以下の私の復号化コード
String keyword = "keyword";
int iterationCount = 1000;
int keyLength = 256;
String[] fields = encryptedPassword.split("]");
byte[] salt = fromBase64(fields[0]);
byte[] cipherBytes = fromBase64(fields[1]);
KeySpec keySpec = new PBEKeySpec(keyword.toCharArray(), salt, iterationCount, keyLength);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWITHSHA256AND256BITAES-CBC-BC");
SecretKey key = keyFactory.generateSecret(keySpec);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
PBEParameterSpec pbeSpec = new PBEParameterSpec(salt, iterationCount);
cipher.init(Cipher.DECRYPT_MODE, key, pbeSpec);
byte[] plainBytes = cipher.doFinal(cipherBytes);
plainStr = new String(plainBytes, "UTF-8").trim();
return plainStr;
私が得ているエラーは以下のとおりです
java.lang.RuntimeException: javax.crypto.BadPaddingException: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
誰でもここで助けてもらえますか