Я использовал код в своем приложении для шифрования и дешифрования паролей. Он отлично работал, пока я не заметил, что он терпит неудачу. Единственное изменение, которое я помню, это обновить 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
Может кто-нибудь, пожалуйста, помогите здесь
Хорошо, после отправки моего ответа, я провел дальнейшие испытания и обнаружил, что версия jdk не является проблемой. Все еще пытаясь разобраться в проблеме, – user1938357
удалось решить проблему. Я установил новую установку ADT, и, похоже, она работает. – user1938357