F05 HMAC256 und HMAC512 von einer Datei

Wir bewegen uns nun weg von der Errechnung von Prüfsummen (Hashes) hin zu Hash-basierten Message Authentication Codes (HMACs) oder auf deutsch: Nachrichtenauthentifizierungscodes mit Prüfsummen. Wenn wir uns die Ausgabe anschauen ist das Ergebnis – wie bei den SHA-Routinen – ein 32- bzw. 64-Byte langer Wert, der wie eine Prüfsumme aussieht. Das Ergebnis ist einmalig für die verwendete Datei und damit auch eine Prüfsumme, aber… wir benötigen zusätzlich einen Schlüssel (im Beispiel hmacKeyByte) für die Errechnung der Prüfsumme.

Wenn dieser Schlüssel nur dem Absender und dem Empfänger der Nachricht bekannt ist, kann damit nicht nur die Integrität der Datei (d.h. die Datei ist unverändert) gewährleistet und überprüft werden. Zusätzlich ist auch sichergestellt, das die Nachricht vom Absender stammt (Authentizität), da nur der Absender und der Empfänger den geheimen Schlüssel kennen. Noch ein wichtiger Hinweis: bitte für den HMAC-Schlüssel nicht den Schlüssel verwenden, der auch für die eigentliche Verschlüsselung genutzt wird.

Hier nun der Programmcode:

Hier das Ergebnis auf der Konsole:

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