Tengo un requisito para 'verificar la integridad' del contenido de los archivos. Los archivos se escribirán en CD/DVD, que se pueden copiar muchas veces. La idea es identificar las copias (después de que se eliminen de Nero, etc.) que se copiaron correctamente.Confirmación del contenido del archivo contra el hash
Soy bastante nuevo en esto, pero una búsqueda rápida sugiere que Arrays.hashCode(byte[])
se ajustará a la necesidad. Podemos incluir un archivo en el disco que contiene el resultado de esa llamada para cada recurso de interés, luego compararlo con el byte[]
del File
como leído desde el disco cuando se marca.
¿Entiendo el método correctamente? ¿Es esta una forma válida de verificar el contenido del archivo?
De lo contrario, se agradecerían las sugerencias sobre palabras clave de búsqueda o estrategias/métodos/clases.
Código de trabajo basado en la respuesta de Brendan. Se encarga del problema identificado por VoidStar (necesita tener todo el byte[]
en memoria para obtener el hash).
import java.io.File;
import java.io.FileInputStream;
import java.util.zip.CRC32;
class TestHash {
public static void main(String[] args) throws Exception {
File f = new File("TestHash.java");
FileInputStream fis = new FileInputStream(f);
CRC32 crcMaker = new CRC32();
byte[] buffer = new byte[65536];
int bytesRead;
while((bytesRead = fis.read(buffer)) != -1) {
crcMaker.update(buffer, 0, bytesRead);
}
long crc = crcMaker.getValue(); // This is your error checking code
System.out.println("CRC code is " + crc);
}
}
Muchas gracias. Ahora tengo código de trabajo (editado en cuestión) con el que estoy contento. –