F04 SHA 128 Hash von einer Datei

Die Ermittlung einer Dateiprüfsumme ist mit wenigen Programmzeilen möglich. Zum Test benötigt Ihr eine Testdatei, welche Ihr zum Beispiel mit dem Beispiel A11 Erzeuge eine Datei von definierter Größe erstellen könnt. Testet auch mal Dateien in der Größe von mehreren hundert Megabytes und Ihr werdet feststellen, wie rasend schnell die Berechnung geschieht.

Die dem Programmbeispiel zu Grunde liegenden SHA-256 und SHA-512-Hashwert-Algorithmen sind eine Weiterentwicklung der SHA-1-Familie und bieten deutlich mehr Sicherheit. Daher solltet Ihr – wo immer es geht – diese Hash-Algorithmen nutzen. Aktuell ist die SHA-3-Familie dabei, in die Java-Welt vorzudringen, aber es existieren noch keine Bibliotheken dafür.

Wofür wird ein SHA-128 Algorithmus benötigt? Einige AES-Verschlüsselungsroutinen (z.B. AES CBC mit 128 Bit Schlüsseln) benötigen einen exakt 128 Bit langen Schlüssel und eine SHA-128-Funktion erzeugt einen genauso langen Schlüssel. Die Routine ist damit perfekt gemacht um ein Byte Array auf die richtige Länge zu bringen. Das könnte zwar auch mittels SHA-1 erledigt werden, ist aber heutzutage als sehr unsicher einzustufen !

Was ist die Besonderheit an dieser Routine? Ganz einfach – es existiert keine offizielle SHA-128 Implementierung und damit auch keine allgemein gültige Implementierung. Das bedeutet im Klartext, das ein Datenaustausch über unterschiedliche Systeme nicht funktionieren wird, da sie die SHA-128-Funktion nicht von Haus aus unterstützen. Daher hier noch einmal der Hinweis: nutzt die nachfolgende Routine mit Bedacht!

Die nachfolgende Programmroutine dürfte Euch für viele „quick and dirty“-Anwendungsfälle eine schnelle Unterstützung bieten:

Hier ist die Konsolenausgabe:

Alle Quellcodes zu Hashes und MACs findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/F-Hashes-und-MACs. Alle Programme sind sowohl unter Java 8 als auch unter Java 11 lauffähig.

Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.

Letzte Aktualisierung: 21.01.2019