El la publicación anterior compartí el código java para generar funciones hash a una cadena utilizando los algoritmos MD2, MD5, SHA-1,SHA-256,SHA-384,SHA-256.
Si deseas puedes consultar el post Funciones de Resumen MD5 y SHA en JAVA en el cual explico brevemente las funciones hash.
Para realizar las capturas de pantalla utilizo la aplicación publicada aquí: Aplicacion Java para realizar capturas de pantalla.
El código para obtener la cadena hash de un archivo es el siguiente:
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
import java.security.*;
import java.util.*;
/*Aplicacion para generar resumenes hash de un archivo
* @marxs7 Less is better
* http://marxs7.blogspot.com
*/
public class HashArchivo
{
private static String hash;
public static String generaHash(String rutaArchivo,String algoritmo)
{
//declarar funcion de resumen
try{
MessageDigest messageDigest = MessageDigest.getInstance(algoritmo); // Inicializa con algoritmo seleccionado
//leer fichero byte a byte
try{
InputStream archivo = new FileInputStream( rutaArchivo );
byte[] buffer = new byte[1];
int fin_archivo = -1;
int caracter;
caracter = archivo.read(buffer);
while( caracter != fin_archivo ) {
messageDigest.update(buffer); // Pasa texto claro a la función resumen
caracter = archivo.read(buffer);
}
archivo.close();//cerramos el archivo
byte[] resumen = messageDigest.digest(); // Genera el resumen
//Pasar los resumenes a hexadecimal
hash = "";
for (int i = 0; i < resumen.length; i++)
{
hash += Integer.toHexString((resumen[i] >> 4) & 0xf);
hash += Integer.toHexString(resumen[i] & 0xf);
}
// System.out.println("Resumen "+algoritmo+" " + hash);
}
//lectura de los datos del fichero
catch(java.io.FileNotFoundException fnfe) {
//manejar excepcion archivo no encontrado
}
catch(java.io.IOException ioe) {
//manejar excepcion archivo
}
}
//declarar funciones resumen
catch(java.security.NoSuchAlgorithmException nsae) {
//manejar excepcion algorito seleccionado erroneo
}
return hash;//regresamos el resumen
}
}
A partir de este código podemos generar una interfaz gráfica que nos permita fácilmente obtener el valor MD5 o SHA de un archivo en formato hexadecimal.
En mi caso la interfaz es la siguiente.
Descarga
Excelente gracias
ResponderEliminar