Во время выполнения, получение java .lang.IllegalStateException с сообщением, не инициализированным Cipher при расшифровке зашифрованного текста, мой код выглядит следующим образом:
public String decrypt(String cipherText) throws SecurityException {
String clearText = null;
try {
cipher = Cipher.getInstance("AES/OFB/NoPadding");
byte[] cipherTextBytes = Base64.decodeBase64(cipherText.getBytes());
byte[] iv = ArrayUtils.subarray(cipherTextBytes, 0, INIT_VECTOR_LENGTH);
cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(iv));
byte[] decryptedBytes = cipher
.doFinal(ArrayUtils.subarray(cipherTextBytes, INIT_VECTOR_LENGTH, cipherTextBytes.length));
clearText = new String(decryptedBytes, CHARACTER_ENCODING).trim();
} catch (InvalidKeyException | IllegalBlockSizeException | BadPaddingException | UnsupportedEncodingException
| NoSuchAlgorithmException | NoSuchPaddingException | InvalidAlgorithmParameterException e) {
throw new SecurityException(e);
}
return clearText;
}
Исключение в потоке «pool-5-thread-3» java .lang.IllegalStateException: шифр не инициализирован в javax.crypto.Cipher.checkCipherState (Cipher. java: 1749) в javax.crypto.Cipher.doFinal (Cipher. java: 2156)
и это периодически возникающая проблема, через некоторое время он расшифровывает зашифрованный текст и работает должным образом.