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?