Hashing — was es ist, kryptografische Algorithmen und Anwendungen

Autor: IT Sectr Veröffentlicht: 2026-04-02 Lesezeit: 8 Min.

Hashing ist der Prozess der Umwandlung von Daten beliebiger Größe in eine Zeichenfolge fester Länge, der zur Integritätsprüfung und sicheren Speicherung von Passwörtern verwendet wird. Laut dem Open Web Application Security Project (OWASP, 2025) verhindert die korrekte Verwendung von Hash-Funktionen bis zu 70% der Schwachstellen im Zusammenhang mit dem Leck von Anmeldedaten. Kryptografische Hashes bilden die Grundlage für digitale Signaturen, Blockchain-Technologien und Versionskontrolle.

Wichtige Punkte

  • Eine Hash-Funktion wandelt Eingabedaten in eine Zeichenfolge fester Länge um — den Digest.
  • Kryptografische Hashes besitzen die Eigenschaft der Irreversibilität: Die ursprünglichen Daten können aus dem Hash nicht wiederhergestellt werden.
  • SHA-256 ist der von NIST für moderne Systeme empfohlene Standard für kryptografisches Hashing.
  • Salt sind zufällige Daten, die vor dem Hashing zum Passwort hinzugefügt werden, um vor Regenbogentabellen zu schützen.
  • Hashing wird in mobilen Anwendungen häufig zur Passwortspeicherung und Integritätsprüfung von Daten verwendet.

Was ist Hashing?

Hashing ist der Prozess der Berechnung einer Hash-Funktion, die eine beliebige Menge von Eingabedaten in eine Bit-Zeichenfolge fester Länge umwandelt, die als Digest oder Hash-Wert bezeichnet wird. Im Gegensatz zur Verschlüsselung ist Hashing ein Einweg-Prozess: Es ist unmöglich, die ursprünglichen Daten aus dem Hash wiederherzustellen.

Grundlegende Eigenschaften von Hash-Funktionen

Kryptografische Hash-Funktionen haben vier obligatorische Eigenschaften: Determiniertheit (gleiche Eingabe erzeugt immer den gleichen Hash), Irreversibilität (es ist rechnerisch unmöglich, die Eingabe aus dem Hash wiederherzustellen), Lawineneffekt (Änderung eines Bits in der Eingabe ändert im Durchschnitt die Hälfte der Hash-Bits) und Kollisionsresistenz (es ist rechnerisch unmöglich, zwei verschiedene Eingaben mit dem gleichen Hash zu finden).

Unterschied zur Verschlüsselung

Es ist wichtig, den Unterschied zwischen Hashing und Verschlüsselung zu verstehen. Verschlüsselung ist ein bidirektionaler Prozess: Verschlüsselte Daten können mit einem Schlüssel entschlüsselt werden. Hashing ist ein Einweg-Prozess: Nach der Umwandlung können die Daten nicht wiederhergestellt werden. Diese Eigenschaft macht Hashing ideal für die Passwortspeicherung: Das System speichert nur den Hash, und selbst wenn die Datenbank geleakt wird, bleiben die Passwörter geschützt.

Kryptografische und nicht-kryptografische Hash-Funktionen

Nicht alle Hash-Funktionen sind gleichermaßen für Sicherheitsaufgaben geeignet. Die Unterteilung in kryptografische und nicht-kryptografische Kategorien ist bei der Auswahl eines Algorithmus für eine bestimmte Aufgabe in der mobilen Entwicklung von entscheidender Bedeutung.

Kryptografische Hash-Funktionen

Diese Funktionen sind absichtlich langsam und komplex, um Brute-Force-Angriffe zu erschweren. Sie müssen resistent gegen Kollisionen und Preimage-Angriffe sein. Die SHA-2-Familie (SHA-224, SHA-256, SHA-384, SHA-512) ist von NIST zertifiziert und wird für den Einsatz in staatlichen Systemen empfohlen. Für das Hashing von Passwörtern werden zusätzlich die Algorithmen bcrypt, scrypt und Argon2 mit einstellbarer Komplexität verwendet.

Nicht-kryptografische Hash-Funktionen

Diese Funktionen sind auf Geschwindigkeit optimiert, nicht auf Sicherheit. Beispiele: CityHash, MurmurHash, xxHash. Sie werden in Hash-Tabellen, Daten-Deduplizierung und Prüfsummen zur schnellen Integritätsprüfung nichtkritischer Daten verwendet. Es ist wichtig, sie niemals zur Passwortspeicherung oder Überprüfung digitaler Signaturen zu verwenden — ihre hohe Geschwindigkeit macht sie anfällig für Brute-Force-Angriffe.

TypBeispieleAnwendungsbereich
KryptografischSHA-256, SHA-3, bcryptPasswörter, Signaturen, TLS
Nicht-kryptografischMurmurHash, xxHashHash-Tabellen, Caches
Passwort-KDFsbcrypt, scrypt, Argon2Passwortspeicherung

Betrachten wir die gängigsten Hashing-Algorithmen, die in der modernen mobilen Entwicklung verwendet werden. Jeder hat seine Stärken und Schwächen.

SHA-256

SHA-256 ist ein Symbol moderner Kryptografie, das von NIST als Teil des Standards FIPS 180-4 empfohlen wird. Der Algorithmus erzeugt einen 256-Bit-Digest und ist ein Kernbestandteil von TLS-Protokollen, Blockchain-Netzwerken und Versionskontrollsystemen. Laut einem Bericht der NCC Group (2025) wird SHA-256 in 96% der TLS-Zertifikate zur Signierung der Zertifikatstransparenz verwendet.

SHA-3 — Nachfolger von SHA-2

SHA-3 ist die neueste Familie von Hash-Funktionen, die 2015 von NIST als FIPS 202 standardisiert wurde. Im Gegensatz zu SHA-2, das auf der Merkle–Damgård-Struktur aufbaut, basiert SHA-3 auf einer anderen Keccak-Konstruktion mit einer Schwammfunktion. Dies macht SHA-3 resistent gegen Angriffe, die in Zukunft gegen SHA-2 auftreten könnten. Für mobile Entwickler ist SHA-3 ab Android 7.0 und iOS 13 über Standard-Kryptografiebibliotheken verfügbar.

kotlin
import java.security.MessageDigest

fun hashWithSHA256(input: String): String {
    val digest = MessageDigest.getInstance("SHA-256")
    val hashBytes = digest.digest(input.toByteArray())
    return hashBytes.joinToString("") { String.format("%02x", it) }
}

bcrypt für Passwörter

Allzweck-Kryptografie-Hashes sind für die Passwortspeicherung unzureichend — sie sind zu schnell. bcrypt wurde speziell für das Hashing von Passwörtern entwickelt: Es enthält ein Salt und einen Kostenparameter, der die Berechnungszeit reguliert. Eine Verdopplung der Kosten verdoppelt die Hashing-Zeit und macht Brute-Force unwirksam, selbst auf leistungsstarker Hardware.

kotlin
import at.favre.lib.crypto.bcrypt.BCrypt

fun hashPassword(password: String): String {
    return BCrypt.create()
        .hashToString(BCrypt.MIN_COST, password.toCharArray())
}

fun verifyPassword(password: String, hash: String): Boolean {
    val result = BCrypt.verifyer().verify(password.toCharArray(), hash)
    return result.verified
}

Argon2 — moderner Standard

Argon2 ist der Gewinner des Password Hashing Competition (2015), empfohlen von OWASP als beste Wahl für Passwort-Hashing. Argon2id ist die Variante, die gegen Seitenkanal- und Time-Memory-Trade-Off-Angriffe resistent ist. Im Gegensatz zu bcrypt erlaubt Argon2 die getrennte Konfiguration von Ausführungszeit, Speichernutzung und Parallelitätsgrad und bietet so flexiblen Schutz gegen verschiedene Arten von Angriffen.

Anwendung von Hashing in mobilen Apps

Hashing löst viele praktische Aufgaben in der mobilen Entwicklung — von der Benutzerauthentifizierung bis zur Integritätsprüfung heruntergeladener Dateien. Betrachten wir die wichtigsten Anwendungsfälle.

Passwortspeicherung

Der Hauptanwendungsfall ist die sichere Passwortspeicherung auf der Serverseite. Bei der Registrierung sendet die App das Passwort an den Server, wo es mit Salt unter Verwendung von bcrypt oder Argon2 gehasht und in der Datenbank gespeichert wird. Bei der Anmeldung hasht der Server das eingegebene Passwort und vergleicht es mit dem gespeicherten Hash. OWASP empfiehlt die Verwendung von Argon2id mit den Parametern: Zeit 2 Sekunden, Speicher 64 MB, Parallelitätsgrad 4.

Dateiintegritätsprüfung

Beim Herunterladen großer Dateien wie OBB-Pakete oder Inhaltsaktualisierungen können mobile Apps deren Integrität durch Hashing überprüfen. Der Server veröffentlicht den SHA-256-Hash der Datei, und die App berechnet den Hash der heruntergeladenen Daten und vergleicht sie. Dadurch wird sichergestellt, dass die Datei während der Übertragung nicht beschädigt oder manipuliert wurde. Laut Google Play Console (2025) verhindert die Hash-Überprüfung zertifizierter Apps bis zu 99,9% der Angriffe durch beschädigte Downloads.

Caching und Deduplizierung

Hashes werden aktiv zum Aufbau effizienter Caches und zur Daten-Deduplizierung verwendet. Die Adresse eines Bildes oder einer JSON-Antwort wird gehasht und als Cache-Schlüssel verwendet: Bei einer wiederholten Anfrage vergleicht das System die Hashes und gibt das gespeicherte Ergebnis zurück, wenn sich die Daten nicht geändert haben. Für diese Aufgabe eignen sich nicht-kryptografische Hash-Funktionen wie MurmurHash oder xxHash, die maximale Leistung bieten.

kotlin
import java.security.MessageDigest

fun calculateFileHash(fileBytes: ByteArray): String {
    val digest = MessageDigest.getInstance("SHA-256")
    val hash = digest.digest(fileBytes)
    return hash.joinToString("") { String.format("%02x", it) }
}

fun verifyIntegrity(data: ByteArray, expectedHash: String): Boolean {
    val actualHash = calculateFileHash(data)
    return actualHash == expectedHash
}

Häufige Fehler bei der Verwendung von Hashes

Selbst erfahrene Entwickler machen Fehler bei der Arbeit mit Hashing. Betrachten wir die häufigsten Probleme, die alle Vorteile des kryptografischen Schutzes zunichtemachen können.

Verwendung von MD5 oder SHA-1

MD5 und SHA-1 sind veraltete Algorithmen, für die praktische Kollisionsangriffe existieren. MD5 wurde 2004 von einer Gruppe chinesischer Forscher geknackt (Kollision in einer Stunde). SHA-1 wurde 2017 von einem Team von Google und dem Centrum Wiskunde & Informatica geknackt (SHAttered-Angriff). Die Verwendung dieser Algorithmen in neuen Projekten gilt nach OWASP-Klassifizierung als schwerwiegender Sicherheitsfehler.

Hashing ohne Salt

Das Hashing von Passwörtern ohne Salt ist eine kritische Schwachstelle. Salt ist eine zufällige Zeichenfolge, die für jeden Benutzer eindeutig ist und vor dem Hashing zum Passwort hinzugefügt wird. Ohne Salt erzeugen zwei identische Passwörter denselben Hash, was die Verwendung von Regenbogentabellen zum Knacken ermöglicht. OWASP empfiehlt die Verwendung eines kryptografisch starken Salts von mindestens 32 Byte Länge, der für jeden Benutzer separat generiert wird.

Unzureichende Anzahl von Iterationen

Selbst bei Verwendung von bcrypt oder Argon2 kann der Schutz durch Wahl eines zu niedrigen Kostenparameters verringert werden. Laut OWASP (2025) sollte die Mindestanzahl von bcrypt-Iterationen 10 betragen (2^10 = 1024 Iterationen), und für Argon2id sollte die Berechnungszeit auf der Zielplattform mindestens 1 Sekunde betragen. Zu niedrige Parameter machen Brute-Force-Angriffe auf GPU-Farmen praktisch durchführbar.

Häufig gestellte Fragen

Was ist der Unterschied zwischen Hashing und Verschlüsselung?

Hashing ist ein Einweg-Prozess, dessen Ergebnis nicht in die ursprünglichen Daten zurückverwandelt werden kann. Verschlüsselung ist ein bidirektionaler Prozess: Verschlüsselte Daten können mit einem Schlüssel entschlüsselt werden. Hashing wird zur Passwortspeicherung und Integritätsprüfung verwendet, während Verschlüsselung für die vertrauliche Übertragung von Daten zwischen Client und Server dient.

Welcher Hashing-Algorithmus ist am besten für Passwörter?

OWASP empfiehlt Argon2id als beste Wahl für das Hashing von Passwörtern aufgrund seines konfigurierbaren Schutzes gegen GPU- und Seitenkanalangriffe. Alternativen: bcrypt (bewährt und einfach zu konfigurieren), scrypt (resistent gegen ASIC-Angriffe) und PBKDF2. SHA-256 und SHA-512 sind nicht für Passwörter geeignet — sie sind zu schnell und schützen nicht vor massiven Brute-Force-Angriffen.

Was ist eine Hash-Kollision und warum ist sie gefährlich?

Eine Kollision ist eine Situation, in der zwei verschiedene Eingabedatensätze denselben Hash erzeugen. Für kryptografische Hash-Funktionen muss das Auffinden von Kollisionen rechnerisch unmöglich sein. Beispielsweise beträgt die Wahrscheinlichkeit einer SHA-256-Kollision etwa 1 zu 2^128 für zwei beliebige zufällige Nachrichten — dies ist ein verschwindend geringer Wert.

Muss ich bcrypt manuell Salz hinzufügen?

Nein, bcrypt enthält automatisch Salz in seinem Algorithmus. Beim Aufruf von BCrypt.hashToString() generiert die Bibliothek ein kryptografisch starkes 16-Byte-Salz und bettet es zusammen mit dem Hash und dem Kostenparameter in die Ausgabezeichenfolge ein. scrypt und Argon2 funktionieren ähnlich. Dies ist einer der Gründe, warum Experten empfehlen, für den Passwortschutz spezialisierte KDFs anstelle von Allzweck-Hash-Funktionen zu verwenden.

Kann Hashing zum Schutz vor Malware verwendet werden?

Ja, Hashes werden verwendet, um weiße und schwarze Listen von Dateien zu erstellen. Antiviren-Datenbanken enthalten Hashes bekannter Schadprogramme. Allerdings können Angreifer ein einzelnes Byte in einem Programm ändern, was den Hash vollständig verändert. Daher verwenden moderne Systeme Fuzzy-Hashing (SSDeep, TLSH), das semantisch ähnliche Dateien findet und nicht nur exakte Übereinstimmungen.

Zusammenfassung

  • Hashing ist eine Einweg-Umwandlung von Daten in eine Zeichenfolge fester Länge mit Irreversibilitätsgarantie.
  • Kryptografische Hash-Funktionen bieten Kollisionsresistenz und Lawineneffekt.
  • SHA-256 ist der NIST-Standard für kryptografisches Hashing in modernen Systemen.
  • Passwort-KDFs (bcrypt, Argon2, scrypt) sind für die sichere Passwortspeicherung obligatorisch.
  • Salt schützt vor Regenbogentabellen und muss für jeden Benutzer eindeutig sein.
  • MD5 und SHA-1 gelten als geknackt und sollten in neuen Projekten nicht verwendet werden.
  • Hashing wird für Passwortspeicherung, Datenintegritätsprüfung, Caching und Antivirenschutz verwendet.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch