Comprobación de Integridad en Ficheros con Java
Publicado por Daniel (6 intervenciones) el 08/10/2017 20:10:10
Buenas, me gustaría comprobar la integridad de un archivo a través de un directorio, es decir, para verificar la integridad de un archivo, sólo hay que comparar el hash del archivo original con el hash del archivo descargado, si ambos son iguales, se puede deducir que el archivo descargado no ha sido alterado y es idéntico al original.
He encontrado el siguiente código por internet:
Pero claro cuando ejecuto me salta el "Debug" se que no le estoy pasando el directorio, pero esa es mi duda, ¿donde tengo que pasarlo? Por ejemplo este es el directorio que quiero pasarle para que me devuelva su código Hash. C:\Users\PC\Desktop\Prueba\SSII\PC1\Hash\Mensaje.txt
Esto lo estoy realizando en Eclipse.
Gracias.
He encontrado el siguiente código por internet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class Resumenes{
public static void main(String [] args){
//declarar funciones resumen
try{
MessageDigest messageDigest2 = MessageDigest.getInstance("SHA"); // Inicializa SHA-1
//leer fichero byte a byte
try{
InputStream archivo = new FileInputStream( args[0] );
byte[] buffer = new byte[1];
int fin_archivo = -1;
int caracter;
caracter = archivo.read(buffer);
while( caracter != fin_archivo ) {
messageDigest2.update(buffer);// Pasa texto claro a la función resumen
caracter = archivo.read(buffer);
}
archivo.close();
byte[] resumen2 = messageDigest2.digest(); // Genera el resumen SHA-1
//Pasar los resumenes a hexadecimal
String m = "";
for (int i = 0; i < resumen2.length; i++)
{
m += Integer.toHexString((resumen2[i] >> 4) & 0xf);
m += Integer.toHexString(resumen2[i] & 0xf);
}
System.out.println("Resumen SHA-1: " + m);
}
//lectura de los datos del fichero
catch(java.io.FileNotFoundException fnfe) {}
catch(java.io.IOException ioe) {}
}
//declarar funciones resumen
catch(java.security.NoSuchAlgorithmException nsae) {}
}
}
Esto lo estoy realizando en Eclipse.
Gracias.
Valora esta pregunta
0