Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/02/2011, 12:36
linkghost
 
Fecha de Ingreso: febrero-2011
Mensajes: 27
Antigüedad: 13 años, 2 meses
Puntos: 1
Información SunCheck - MD5

a mas de alguien le a pasado que tiene que compara archivos y no se le ocurre como, la solucion mas usual es compara los nombres o los pesos, pero esto no puede llevar a una solucion erronea (llamese error al eliminar un archivo creyeno que esta repetido o por el contrario dejar dos archivos iguales).
por ello al ver los MD5 podemos esta a un porsentaje muy alto de que el archivo es unico, al compara el MD5 de ambos archivos en duda.

aqui les dejo un pequeño codigo que le saca el MD5 a un archivo.

Código:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 *
 * @author Norman Th. Glaves
 */
public class CheckSum {

    /***
     * Convierte un arreglo de bytes a String usando valores hexadecimales
     * @param digest arreglo de bytes a convertir
     * @return String creado a partir de <code>digest</code>
     */
    private static String toHexadecimal(byte[] digest){
        String hash = "";
        for(byte aux : digest) {
            int b = aux & 0xff;
            if (Integer.toHexString(b).length() == 1) hash += "0";
            hash += Integer.toHexString(b);
        }
        return hash;
    }

    /***
     * Realiza la suma de verificación de un archivo mediante MD5
     * @param archivo archivo a que se le aplicara la suma de verificación
     * @return valor de la suma de verificación.
     */
    public static String getMD5Checksum(String _file) {
        File archivo;
        archivo = new File(_file);
        byte[] textBytes = new byte[1024];
        MessageDigest md = null;
        int read = 0;
        String md5 = null;
        try {
            InputStream is = new FileInputStream(archivo);
            md = MessageDigest.getInstance("MD5");
            while ((read = is.read(textBytes)) > 0) {
                md.update(textBytes, 0, read);
            }
            is.close();
            byte[] md5sum = md.digest();
            md5 = toHexadecimal(md5sum);
        } catch (FileNotFoundException e) {
        } catch (NoSuchAlgorithmException e) {
        } catch (IOException e) {
        }

    return md5;
    }
}
Obs.
que es un MD5? [URL="http://es.wikipedia.org/wiki/MD5"]aqui[/URL] la respuesta.