Нашел решение, но пока не уверен, что это правильное решение, потому что мне все еще нужно получить PrivateKey и расшифровать файл, но сейчас я смог зашифровать его, используя предоставленный PublicKey в качестве модуля, но у меня нетэкспонент, и я просто использовал некоторое общее число «65537» в качестве показателя, который я прочитал, что это не является критической частью шифрования.
Мне пришлось изменить логику, чтобы использовать RSAPublicKeySpec (который использует BigInteger и Base64Decoder) вместо X509EncodedKeySpec для установки KeySpec и продолжения использования объекта KeyFactory для генерации открытого ключа.Теперь этой логике НУЖЕН модуль и показатель степени.
byte[] buffer = new byte[(int) new File(file).length()];
BufferedInputStream f = new BufferedInputStream(new FileInputStream(file));
f.read(buffer);
String modulusBase64 = new String(buffer);
BASE64Decoder b64dec = new BASE64Decoder();
String exponentBase64 = "65537";
RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec(new BigInteger (1, b64dec.decodeBuffer(modulusBase64)), new BigInteger(1, b64dec.decodeBuffer(exponentBase64)));
KeyFactory publicKeyFactory = KeyFactory.getInstance("RSA");
publicKey = publicKeyFactory.generatePublic(publicKeySpec);
// Это PublicKey в файле."J45t4SWGbFzeNuunHliNDZcLVeFU7lOpyNkX1xX + sVNaVJK8Cr0rSjUkDC8h9n + Zg7m0MVYk0byafPycmzWNDynpvj2go9mXwmUpmcQprX1vexxT5j1XmAaBZFYaJRcPWSVU92pdNh1Sd3USdFjgH0LQ5B3s8F95xdyc / 5I5LDKhRobx6c1gUs / rnJfJjAgynrE4AsNsNem + STaZWjeb4J + f5Egy9xTSEl6UWxCClgCwhXopy10cBlH8CucpP0cyckOCIOloJ7mEMRCIpp6HPpYexVmXXSikTXh7aQ7tSlTMwUziIERc / zRpyj1Nk96Y7V8AorLFrn1R4Of66mpAdQ =="