Mi aplicación cifra un archivo con AES, y los datos se leen, se cifran y se escriben con un búfer. Su tamaño se define con un valor BUF_SIZE, que es constante.
Intentaré explicar mi pregunta con un ejemplo.
Por ejemplo, el tamaño del archivo es de 1.73 GB y el búfer es de 16 KB. La aplicación calcula (fsize% BUF_SIZE) y descubre que permanecerán 14K de datos.
Por ahora, hace lo siguiente:
1) Lee estos 14 KB de datos al búfer
2) Rellena otros 2 KB con datos aleatorios
3) Encripta y escribe el búfer completo.
¡El problema es que después de tal cifrado, incluso un archivo de texto sin formato de 310 bytes se convierte en un monstruo de 16 KB!
La idea es cambiar el algoritmo para cifrar SOLAMENTE estos 14 KB y escribirlos en el archivo resultante.
Cuando estaba escribiendo ese algoritmo, por algún motivo consideré que la segunda forma era inaceptable; ahora no puedo recordar la razón.
¿Es seguro cifrar archivos como este?
Estoy más interesado en saber si hacerlo de una manera u otra como se describe anteriormente hace que los ataques de recuperación de clave completa sean más fáciles. Soy un estudiante que hace esto en mi tiempo libre, no un profesional.
EDIT 1 : mi aplicación cifra el encabezado con AES / GCM-128 y los demás datos, con el modo AES / CFB-256. Así que, según tengo entendido, no importa para CFB la cantidad de datos que quedan, ¿no?
EDIT 2 : Agregué este enfoque a mi aplicación. Gracias a todos los que ayudaron! (^_^)