Шифрование RSA 2048 - исключение

Я пытаюсь зашифровать и расшифровать данные с помощью RSA 2048.

У нас есть один открытый ключ и закрытый ключ, и мы будем использовать его везде. но проблема в том, что когда я расшифровываю, я получаю javax.crypto.BadPaddingException: данные должны начинаться с нуля

File file = new File("C:\\temp-ldi\\pubkey.txt");
FileWriter writer = new FileWriter(file);
file.createNewFile();
encryptedText = RSACrypto.encrypt("PLAIN TEXT"); //no argument of pub-key, generate key pair
writer.write(new BASE64Encoder().encode(RSACrypto.pubKeyToBytes(RSACrypto.publicKey)));
writer.close();
file = new File("C:\\temp-ldi\\privkey.txt");
writer = new FileWriter(file);
file.createNewFile();
writer.write(new BASE64Encoder().encode(RSACrypto.privKeyToBytes(RSACrypto.privateKey)));
writer.close();

Затем я использую код ниже, чтобы расшифровать данные

File privfile = new File("C:\\temp-ldi\\privkey.txt");
File pubfile = new File("C:\\temp-ldi\\pubkey.txt");
FileReader reader = new FileReader(pubfile);
// file.createNewFile();
BufferedReader br = new BufferedReader(reader);
StringBuilder sb = new StringBuilder();
String s;
while ((s = br.readLine()) != null) {
    sb.append(s);
}
br.close();
reader.close();
this.encryptedText = RSACrypto.encrypt("PLAIN TEXT", sb.toString());
reader = new FileReader(privfile);
br = new BufferedReader(reader);
sb = new StringBuilder();
while ((s = br.readLine()) != null) {
    sb.append(s);
}
br.close();
reader.close();
System.out.println(RSACrypto.decrypt(this.encryptedText, sb.toString()));

вся строка шифрования / дешифрования будет возвращена в формате Base64Encoder / Base64Decoder.

Как передать секретный ключ из файла / простой строки, чтобы ключ не был изменен.

Обновить RSACrypto класс:http://sebsauvage.net/paste/?83517f2b3db94d24#Sdu12/vXPuxa5AxO95FPgKSF6N40R2DzD6lwQkvroyE=

Ответы на вопрос(1)

Ваш ответ на вопрос