java.lang.IllegalArgumentException: mala base-64 al descifrar la cadena

Estoy tratando de encriptar una cadena usando KeyStore y usé esta publicación como referencia.

Reemplazo de KeyPairGeneratorSpec con KeyGenParameterSpec.Builder equivalentes - Falló la operación del almacén de claves

Sin embargo, sigo recibiendo este "base-64 malo" cuando descifro la cadena. No entiendo exactamente cómo solucionar esto. Entiendo que la cadena encriptada contiene caracteres que el descifrador no conoce. Pero no entiendo la solución.

Vi algunas publicaciones como esas, pero no ayudó mucho ya que no hay código en las respuestas.

java.lang.IllegalArgumentException: bad base-64

Este es un fragmento de mi código de prueba, ¿alguien puede mostrarme cómo descifro mi cadena?

Cipher inCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "AndroidOpenSSL");
inCipher.init(Cipher.ENCRYPT_MODE, publicKey);

Cipher outCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "AndroidOpenSSL");
outCipher.init(Cipher.DECRYPT_MODE, privateKey);

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
CipherOutputStream cipherOutputStream = new CipherOutputStream(
        outputStream, inCipher);
cipherOutputStream.write(plainText.getBytes("UTF-8"));
cipherOutputStream.close();

String ecryptedText = outputStream.toString();
Log.d(TAG, "Encrypt = " + ecryptedText);

String cipherText = ecryptedText;
CipherInputStream cipherInputStream = new CipherInputStream(
        new ByteArrayInputStream(Base64.decode(cipherText, Base64.DEFAULT)), outCipher);
ArrayList<Byte> values = new ArrayList<>();
int nextByte;
while ((nextByte = cipherInputStream.read()) != -1) {
    values.add((byte)nextByte);
}

byte[] bytes = new byte[values.size()];
for(int i = 0; i < bytes.length; i++) {
    bytes[i] = values.get(i).byteValue();
}

String finalText = new String(bytes, 0, bytes.length, "UTF-8");
Log.d(TAG, "Decrypt = " + ecryptedText);

Respuestas a la pregunta(1)

Su respuesta a la pregunta