MD5 Hash

Status
Nicht offen für weitere Antworten.

M@rk

Mitglied
Hallo,

wir haben eine Frage: Wir wollen den Hashwert von Dateien ermitteln. Dazu lesen wir die Dateien Zeilenweise ein und speichern das in einem langen String, von dem wir dann mittels der Funktion getMD5Hash den Hashwert ermitteln.

Probleme machen nun z.B. exe Dateien, die ja recht groß sind und viele Codezeilen haben. Dadruch brauch das Hashwerterstellen sehr lange.

Hat jemand eine Idee wie man den Code optimieren kann?


Code:
 public static String dateiEinlesen(String file) {
        String zeile = "";
        String tmp = "";

        try {

            BufferedReader laden = new BufferedReader(new FileReader(file));

            while (zeile != null) {
                zeile = laden.readLine();
                if (zeile != null) {
                    tmp = tmp + zeile;
                }
            }
            laden.close();

        } catch (IOException e) {
            System.out.println("Datei nicht gefunden");
        }

        return getMD5Hash(tmp);
    }



Code:
 public static String getMD5Hash(String in) {
        StringBuffer result = new StringBuffer(32);
        try {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(in.getBytes());
            Formatter f = new Formatter(result);
            for (byte b : md5.digest()) {
                f.format("%02x", b);
            }
        } catch (NoSuchAlgorithmException ex) {
            ex.printStackTrace();
        }
        return result.toString();
    }
 

HoaX

Top Contributor
die daten in einem stream lesen ist sehr unangebracht. einfach mittels FileInputStream ein byte[] lesen und direkt an MessageDigest#update füttern.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben