PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MD5 von Datei?



scar
06-12-2005, 22:07
Hallo!
Habe vor kurzem mal mit Java angefangen.
Stecke allerdings gerade bei einem Programm fest.
Ich will die md5-summe einer Datei berechnen.
Allerdings klappt das nicht so ganz:


public void genMD5() {
try {
FileInputStream in = new FileInputStream( sPath );
ByteArrayOutputStream out = new ByteArrayOutputStream();
for( int b=in.read(); b>0; b=in.read()) {
out.write(b);
}
in.close();
byte[] bContent = out.toByteArray();
out.close();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update( bContent);
md5 = md.digest();
sMD5 = md.digest().toString();
} catch (NoSuchAlgorithmException e) {
System.err.println("ERROR: The algorithm MD5 is not supported by your java platform.");
}

} catch( IOException e ) {
System.err.println( "ERROR: occured when reading file \n\t\t"
+ sPath + ": \n\t\t" + e.toString() );
}
}

Als Ausgabe erscheint dann:
[B@1cde100
Was ja wirklich keine md5 summe ist.
Denke das liegt an dem Dateiauslesen etc.
Hoffe ihr könnt mir helfen.
Christian

scar
07-12-2005, 20:04
Ah habs.
Einmal sollte man für große Dateien statt out.write(b); md.update(...);
nehmen.
Ausserdem muss man die einzelnen bytes zu hex nach strings umwandeln.
Dann hat man die korrekte md5 summe.
Scar

fuffy
12-12-2005, 09:29
Hi!

Oder man nimmt einfach org.apache.commons.codec.digest.DigestUtils.md5Hex (byte[] data) (http://jakarta.apache.org/commons/codec/apidocs/org/apache/commons/codec/digest/DigestUtils.html)

Gruß
fuffy