cifrar y descifrar archivos grandes usando rsa en java

Estoy usando el algoritmo RSA para el cifrado y descifrado de un archivo con un tamaño superior al tamaño de la clave rsa.

En el siguiente código para el cifrado, estoy leyendo el contenido del archivo en bloques y convirtiéndolo en texto cifrado. El tamaño del bloque es de 32 bytes.

FileInputStream fin1 = new FileInputStream(genfile);

FileOutputStream fout = new FileOutputStream(seedcipher);

byte[] block = new byte[32];
int i;
while ((i = fin1.read(block)) != -1)
{
    byte[] inputfile= cipher.doFinal(block);
    fout.write(inputfile);
}

fin1.close();

En la parte de descifrado, se realiza el mismo descifrado en bloque en el código donde he mencionado el tamaño del bloque como 128 bytes

FileInputStream fin1 = new FileInputStream(encryptedfile);
FileOutputStream fout = new FileOutputStream(seedcipher);

DataInputStream dos =new DataInputStream(fin1);
DataOutputStream dosnew =new DataOutputStream(fout);
byte[] block = new byte[128];
int i;
while ((i = fin1.read(block)) != -1)
{
    byte[] inputfile= cipher.doFinal(block);
      fout.write(inputfile);
}

El tamaño del archivo de entrada es 81.3 kB y el archivo contiene

0
1
2
3
4.....29000 

Una vez descifrado el archivo, la salida contiene algunos valores adicionales que no son relevantes. ¿Por qué hay datos adicionales en el resultado?

Respuestas a la pregunta(3)

Su respuesta a la pregunta