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?
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();
}