Hi,
ich habe eine Methode in der ich ein Bild skaliere(vergrößere) und dann unter einem Namen speicher der die md5 enthalten soll. Ich erhalte aber die falsche md5 und weiß noch nicht wie so.
Die eigentliche md5 wird hier berechnet:
Weiß Jemand von Euch woran es liegen könnte? Von dem md5 Algorithmus habe ich leider keine Ahnung. Laut dem Programm müsste die md5 "b8b6134b3462861aa64d7c2ffc9d1702" lauten, obwohl mir mein md5sum unter Linux "9be6b6368d6f7e544af44f13480d40be" angibt.
Grüße Markus
ich habe eine Methode in der ich ein Bild skaliere(vergrößere) und dann unter einem Namen speicher der die md5 enthalten soll. Ich erhalte aber die falsche md5 und weiß noch nicht wie so.
Java:
/**
* Aus dem Thumbnail soll ein Portrait erstellt werden.
* Nur die Weite muss angegeben werden, die neue Hoehe wird
* aus dem alten Hoehe-Weite Verhaeltnis bestimmt. Der neue
* Name enthaelt die md5 und als Suffix den Datentyp.
*
* @param oldImage
* Enthaelt die Bild-Daten.
* @param destDir
* Pfad des Verzeichnisses unter dem das neue Bild gespeichert werden soll.
* @param width
* Die Breite des neuen Bildes.
*/
private File getWidthScaledPortrait(File oldImage, String destDir, int width) throws Exception {
String imgType;
String md5Sum;
BufferedImage bufOldImage;
BufferedImage bufNewImage;
File newImage = null;
File assetsDir;
try{
assetsDir = makeDir(destDir);
imgType = getMimeType(oldImage.getAbsolutePath());
bufOldImage = ImageIO.read(oldImage);
bufNewImage = createWidthScaledImage(bufOldImage, width);
md5Sum = getMD5Checksum(bufNewImage, imgType);
newImage = new File(assetsDir.getPath()+"/"+md5Sum+"."+imgType);
ImageIO.write(bufNewImage, imgType, newImage);
} catch( IOException ex){
ex.printStackTrace();
}
return newImage;
}
Die eigentliche md5 wird hier berechnet:
Java:
public static String getMD5Checksum(BufferedImage fileImg,
String imgType) throws Exception {
byte[] b = createChecksum(fileImg, imgType);
String result = "";
for (int i=0; i < b.length; i++) {
result +=
Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
}
return result;
}
public static byte[] createChecksum(BufferedImage bufImg, String imgType) throws Exception {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bufImg, imgType, os);
InputStream fis = new ByteArrayInputStream(os.toByteArray());
byte[] buffer = new byte[1024];
MessageDigest complete = MessageDigest.getInstance("MD5");
int numRead;
do {
numRead = fis.read(buffer);
if (numRead > 0) {
complete.update(buffer, 0, numRead);
}
} while (numRead != -1);
fis.close();
return complete.digest();
}
Weiß Jemand von Euch woran es liegen könnte? Von dem md5 Algorithmus habe ich leider keine Ahnung. Laut dem Programm müsste die md5 "b8b6134b3462861aa64d7c2ffc9d1702" lauten, obwohl mir mein md5sum unter Linux "9be6b6368d6f7e544af44f13480d40be" angibt.
Grüße Markus
Zuletzt bearbeitet: