Hallo Liebe Community,
Ich arbeite seit einiger Zeit an einem Programm womit man Hashwerte von Dateien vergleichen kann. Das Grundgerüst ist folgendes:
1. Schritt: Es wird ein Hauptverzeichnis nach allen Files durchsucht
2. Schritt: Es wird ein Hashwert für jede Datei gebildet (SHA-256)
3. Schritt: Die generierten Hashwerte und Dateipfade werden in eine neue Datei geschrieben.
Meine Aufgabe ist nun, die generierten Hashwerte in ein Byte-Array zu speichern und sie in der neuen Datei als Hex auszugeben.
Beim durchforsten des Internets habe ich immer nur Beispiele bzw. Lösungen gefunden, die sich nur auf Hashwerte eines Strings beziehen. Ich bräuchte allerdings eine andere Möglichkeit die Hashwerte in ein Byte-Array zu speichern. Jedoch finde ich dazu keinerlei Hilfe im Internet.
Hier ein Ausschnitt meines Codes, wo ich vermute, dass das Byte Array hinein soll.
Ich hoffe Ihr könnt mir helfen, das Problem bzw. die Aufgabe zu lösen.
Bei Rückfragen stehe ich gerne zur Verfügung.
Mit freundlichen Grüßen
Jasmin
Ich arbeite seit einiger Zeit an einem Programm womit man Hashwerte von Dateien vergleichen kann. Das Grundgerüst ist folgendes:
1. Schritt: Es wird ein Hauptverzeichnis nach allen Files durchsucht
2. Schritt: Es wird ein Hashwert für jede Datei gebildet (SHA-256)
3. Schritt: Die generierten Hashwerte und Dateipfade werden in eine neue Datei geschrieben.
Meine Aufgabe ist nun, die generierten Hashwerte in ein Byte-Array zu speichern und sie in der neuen Datei als Hex auszugeben.
Beim durchforsten des Internets habe ich immer nur Beispiele bzw. Lösungen gefunden, die sich nur auf Hashwerte eines Strings beziehen. Ich bräuchte allerdings eine andere Möglichkeit die Hashwerte in ein Byte-Array zu speichern. Jedoch finde ich dazu keinerlei Hilfe im Internet.
Hier ein Ausschnitt meines Codes, wo ich vermute, dass das Byte Array hinein soll.
Java:
private BigInteger genHash(File f) throws NoSuchAlgorithmException, FileNotFoundException {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
BigInteger bigInt = null;
InputStream is = new FileInputStream(f);
byte[] buffer = new byte[8192];
int read = 0;
try {
while ((read = is.read(buffer)) > 0) {
digest.update(buffer, 0, read);
}
byte[] sha256sum = digest.digest();
bigInt = new BigInteger(1, sha256sum);
} catch (IOException e) {
throw new RuntimeException("Unable to process file for SHA-256", e);
} finally {
try {
is.close(); //InputStream is closed
} catch (IOException e) {
throw new RuntimeException("Unable to close input stream for SHA-256 calculation", e); // throws Exception that the program was not able to close the InputStream
}
}
return bigInt; // return value
}
Ich hoffe Ihr könnt mir helfen, das Problem bzw. die Aufgabe zu lösen.
Bei Rückfragen stehe ich gerne zur Verfügung.
Mit freundlichen Grüßen
Jasmin