ToolPal
A hand opening a smart home door with digital access panel, conveying security and technology.

Kryptografische Hashfunktionen erklaert - SHA-256, SHA-512 und mehr

📷 Joppe Beurskens / Pexels

Kryptografische Hashfunktionen erklaert - SHA-256, SHA-512 und mehr

Ein umfassender Leitfaden zu kryptografischen Hashfunktionen einschliesslich SHA-256, SHA-512, MD5 und mehr. Erfahren Sie alles ueber Hash-Eigenschaften und Anwendungsfaelle wie Pruefsummen, Passwort-Hashing, Blockchain und digitale Signaturen.

DVon Daniel Park6. März 202610 Min. Lesezeit

Einfuehrung: Was sind Hashfunktionen?

Eine Hashfunktion ist eine mathematische Funktion, die eine Eingabe beliebiger Groesse nimmt und eine Ausgabe fester Groesse erzeugt — den sogenannten Hash, Digest oder Pruefsumme. Kryptografische Hashfunktionen fuegen Sicherheitseigenschaften hinzu, die sie fuer Softwareentwicklung, Cybersicherheit, Blockchain-Technologie und Datenintegritaetspruefung unverzichtbar machen.

Hashfunktionen sind in der modernen Datenverarbeitung allgegenwaertig. Jedes Mal, wenn Sie sich auf einer Website anmelden, einen Dateidownload verifizieren, Code in Git committen oder mit einer Blockchain interagieren, arbeiten Hashfunktionen im Hintergrund. Das Verstaendnis ihrer Funktionsweise und der richtigen Wahl des Algorithmus ist Grundwissen fuer jeden Entwickler.

Moechten Sie schnell Hashes generieren? Probieren Sie unser Hash-Generator-Tool, das MD5, SHA-1, SHA-256, SHA-384 und SHA-512 unterstuetzt.

Kerneigenschaften kryptografischer Hashfunktionen

Eine gute kryptografische Hashfunktion muss mehrere Schluesseleigenschaften besitzen, die sie von einer einfachen Pruefsumme oder gewoehnlichen Hashfunktion unterscheiden.

1. Deterministisch

Dieselbe Eingabe erzeugt immer dieselbe Ausgabe. Wenn Sie den String „Hello, World!" mit SHA-256 hashen, erhalten Sie auf jedem Rechner, in jeder Programmiersprache, jedes Mal denselben Hash.

Input:  "Hello, World!"
SHA-256: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f

2. Feste Ausgabegroesse

Unabhaengig von der Eingabegroesse ist die Ausgabe immer gleich lang:

AlgorithmusAusgabegroesse (Bit)Ausgabegroesse (Hex-Zeichen)
MD512832
SHA-116040
SHA-22422456
SHA-25625664
SHA-38438496
SHA-512512128
SHA-3-25625664
BLAKE3256 (Standard)64
Input: "a"
SHA-256: ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb

Input: "The quick brown fox jumps over the lazy dog"
SHA-256: d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

Input: [gesamter Inhalt einer 1-GB-Datei]
SHA-256: [immer noch genau 64 Hex-Zeichen]

3. Urbildresistenz

Gegeben einen Hashwert, sollte es rechnerisch nicht moeglich sein, eine Eingabe zu finden, die diesen Hash erzeugt. Hashfunktionen sind Einwegfunktionen — man kann sie nicht umkehren.

Hash: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Koennen Sie die Eingabe finden? Nur durch Brute Force.
(Es ist uebrigens der leere String)

4. Zweite-Urbild-Resistenz

Gegeben eine Eingabe und ihren Hash, sollte es rechnerisch nicht moeglich sein, eine andere Eingabe zu finden, die denselben Hash erzeugt.

5. Kollisionsresistenz

Es sollte rechnerisch nicht moeglich sein, zwei verschiedene Eingaben zu finden, die denselben Hash erzeugen.

6. Lawineneffekt

Eine kleine Aenderung in der Eingabe sollte eine drastische Aenderung in der Ausgabe verursachen. Selbst die Aenderung eines einzelnen Bits sollte etwa die Haelfte der Ausgabebits aendern.

Input: "Hello, World!"
SHA-256: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f

Input: "Hello, World?" (! zu ? geaendert)
SHA-256: 4a6e2ef4e4fa0e534f1d1989f453daa87f36e5e4e35b3dcb3d82f22d12654083

Diese beiden Hashes sehen voellig unterschiedlich aus, obwohl sich die Eingaben nur um ein Zeichen unterscheiden. Sie koennen dies selbst mit unserem Hash-Generator ueberpruefen.

Die SHA-Familie der Hashfunktionen

Die Secure Hash Algorithm (SHA) Familie ist die am weitesten verbreitete Gruppe kryptografischer Hashfunktionen. Sie wurde von der NSA entwickelt und vom NIST veroeffentlicht.

SHA-1 (Veraltet)

SHA-1 erzeugt einen 160-Bit-Hash (20 Byte). Es war jahrelang der Standard, gilt aber inzwischen als gebrochen und sollte nicht mehr fuer Sicherheitszwecke verwendet werden.

  • Status: Veraltet — nicht fuer neue Anwendungen verwenden
  • Kollision gefunden: Google und CWI Amsterdam demonstrierten 2017 eine praktische Kollision (SHAttered-Angriff)
  • Noch in Verwendung: Git nutzt SHA-1 fuer Objekt-IDs (Umstellung auf SHA-256 im Gange)
  • Ausgabe: 40 Hexadezimalzeichen

SHA-256

SHA-256 ist die heute am weitesten verbreitete Hashfunktion. Sie gehoert zur SHA-2-Familie und erzeugt einen 256-Bit-Hash (32 Byte).

  • Status: Sicher und weit empfohlen
  • Einsatz: Bitcoin, TLS-Zertifikate, Code-Signierung, Dateiintegritaetspruefungen
  • Leistung: Mittel — schnell genug fuer die meisten Anwendungen
  • Ausgabe: 64 Hexadezimalzeichen
// JavaScript: SHA-256-Hash generieren
async function sha256(message) {
  const encoder = new TextEncoder();
  const data = encoder.encode(message);
  const hashBuffer = await crypto.subtle.digest('SHA-256', data);
  const hashArray = Array.from(new Uint8Array(hashBuffer));
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}

const hash = await sha256('Hello, World!');
console.log(hash);
// dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f

SHA-384

SHA-384 ist eine verkuerzte Version von SHA-512 und erzeugt einen 384-Bit-Hash. Es bietet etwas hoehere Sicherheitsmargen als SHA-256.

  • Status: Sicher
  • Einsatz: TLS, Hochsicherheitsanwendungen
  • Ausgabe: 96 Hexadezimalzeichen

SHA-512

SHA-512 erzeugt einen 512-Bit-Hash (64 Byte). Auf 64-Bit-Systemen ist es tatsaechlich schneller als SHA-256, da es Daten in groesseren Bloecken verarbeitet.

  • Status: Sicher
  • Leistung: Oft schneller als SHA-256 auf 64-Bit-Systemen
  • Einsatz: Passwort-Hashing, digitale Signaturen, Hochsicherheitsanwendungen
  • Ausgabe: 128 Hexadezimalzeichen
import hashlib

# SHA-512 in Python
message = "Hello, World!"
hash_object = hashlib.sha512(message.encode('utf-8'))
hex_digest = hash_object.hexdigest()
print(hex_digest)
# 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387

SHA-2-Familie im Vergleich

AlgorithmusAusgabe-BitsBlockgroesseInterner ZustandSicherheitsniveau
SHA-224224512256112 Bit
SHA-256256512256128 Bit
SHA-3843841024512192 Bit
SHA-5125121024512256 Bit
SHA-512/2242241024512112 Bit
SHA-512/2562561024512128 Bit

SHA-3 (Keccak)

SHA-3 ist das neueste Mitglied der SHA-Familie, basierend auf dem Keccak-Algorithmus. Es verwendet eine grundlegend andere Konstruktion (Schwamm-Konstruktion) als SHA-2 und bietet Algorithmus-Diversitaet.

  • Status: Sicher, 2015 standardisiert
  • Konstruktion: Schwamm-Konstruktion (anders als SHA-2s Merkle-Damgard)
  • Varianten: SHA-3-224, SHA-3-256, SHA-3-384, SHA-3-512, SHAKE128, SHAKE256
  • Einsatz: Backup-Option falls SHA-2 jemals kompromittiert wird

MD5: Warum es noch existiert

MD5 erzeugt einen 128-Bit-Hash und war einst die beliebteste Hashfunktion. Es ist jetzt kryptografisch gebrochen, wird aber weiterhin fuer nicht-sicherheitsrelevante Zwecke verwendet.

MD5 NICHT verwenden fuer:

  • Passwort-Hashing
  • Digitale Signaturen
  • Zertifikatsverifizierung
  • Jede sicherheitskritische Anwendung

MD5 ist akzeptabel fuer:

  • Nicht-kryptografische Pruefsummen (Dateiintegritaet gegen versehentliche Beschaedigung)
  • Content-adressierbaren Speicher (wo Sicherheit kein Thema ist)
  • Deduplizierung
  • Legacy-Systemkompatibilitaet
import hashlib

# MD5 ist bei Datei-Pruefsummen noch ueblich
md5_hash = hashlib.md5(b"Hello, World!").hexdigest()
print(md5_hash)  # 65a8e27d8879283831b664bd8b7f0ad4

BLAKE3: Die moderne Alternative

BLAKE3 ist eine neuere Hashfunktion, die erhebliche Leistungsverbesserungen gegenueber SHA-2 und SHA-3 bietet und dabei starke Sicherheitseigenschaften beibehaelt.

Vorteile von BLAKE3:

  • Extrem schnell: 4-8x schneller als SHA-256 auf modernen CPUs
  • Parallelisierbar: Nutzt SIMD-Befehle und mehrere Kerne
  • Sicher: Basiert auf dem gut analysierten BLAKE2 und der ChaCha-Stromchiffre
  • Vielseitig: Kann als Hash, MAC, KDF und XOF fungieren
use blake3;

fn main() {
    let hash = blake3::hash(b"Hello, World!");
    println!("{}", hash.to_hex());
    // 288a26b2bfb0602c0c7c9e4bf714f53f46c090da7e7ab8a30af9bf6c8e3bf0f8
}

Anwendungsfaelle fuer Hashfunktionen

1. Dateiintegritaet und Pruefsummen

Hashfunktionen verifizieren, dass Dateien waehrend der Uebertragung nicht beschaedigt oder manipuliert wurden.

# Pruefsumme generieren
sha256sum ubuntu-24.04.iso > checksum.txt

# Pruefsumme verifizieren
sha256sum -c checksum.txt
# ubuntu-24.04.iso: OK
// Dateiintegritaet in JavaScript verifizieren
async function verifyFileIntegrity(file, expectedHash) {
  const buffer = await file.arrayBuffer();
  const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
  const hashArray = Array.from(new Uint8Array(hashBuffer));
  const actualHash = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');

  return actualHash === expectedHash;
}

Verwenden Sie unseren Hash-Generator, um schnell Pruefsummen fuer Ihre Dateien und Strings zu berechnen.

2. Passwort-Hashing

Passwoerter im Klartext zu speichern ist eine kritische Sicherheitsluecke. Hashfunktionen ermoeglichen die Passwortverifikation ohne Speicherung.

Wichtig: Verwenden Sie KEIN reines SHA-256 fuer Passwort-Hashing. Nutzen Sie eine dedizierte Passwort-Hashfunktion mit Salting, die absichtlich langsam ist.

Empfohlene Passwort-Hashing-Algorithmen:

AlgorithmusStatusHauptmerkmal
Argon2idBeste WahlSpeicherintensiv, GPU-resistent
bcryptBewaehrtWeit unterstuetzt, kampferprobt
scryptGutSpeicherintensiv
PBKDF2AkzeptabelNIST-genehmigt, weit verfuegbar
// Node.js Passwort-Hashing mit bcrypt
import bcrypt from 'bcrypt';

// Passwort hashen
const saltRounds = 12;
const passwordHash = await bcrypt.hash('user_password', saltRounds);

// Passwort verifizieren
const isValid = await bcrypt.compare('user_password', passwordHash);
// true

// Argon2id (bevorzugt fuer neue Anwendungen)
import argon2 from 'argon2';

const hash = await argon2.hash('user_password', {
  type: argon2.argon2id,
  memoryCost: 65536,  // 64MB
  timeCost: 3,
  parallelism: 4,
});

const valid = await argon2.verify(hash, 'user_password');

Mehr zur Passwortsicherheit finden Sie in unserem Passwort-Sicherheitsleitfaden. Starke Passwoerter generieren Sie mit unserem Passwort-Generator.

3. Blockchain und Kryptowaehrung

Hashfunktionen sind fundamental fuer die Blockchain-Technologie. Bitcoin verwendet SHA-256 in seinem Proof-of-Work-Konsensmechanismus.

import hashlib
import time

def mine_block(data, difficulty):
    """Einfache Proof-of-Work-Mining-Simulation"""
    prefix = '0' * difficulty
    nonce = 0

    while True:
        text = f'{data}{nonce}'
        hash_result = hashlib.sha256(text.encode()).hexdigest()

        if hash_result.startswith(prefix):
            return nonce, hash_result

        nonce += 1

# Block mit Schwierigkeit 4 minen (Hash muss mit 0000 beginnen)
nonce, hash_value = mine_block("Block data here", 4)
print(f"Nonce: {nonce}")
print(f"Hash: {hash_value}")

4. Digitale Signaturen

Digitale Signaturen nutzen Hashfunktionen, um Nachrichten effizient zu signieren. Statt die gesamte Nachricht zu signieren, wird die Nachricht gehasht und der Hash signiert.

5. Content-adressierbarer Speicher

Systeme wie Git, IPFS und Docker verwenden Hashfunktionen, um Inhalte anhand ihres Hashes zu adressieren. Dies bietet Deduplizierung, Integritaetsverifizierung und Unveraenderlichkeit.

6. HMAC (Hash-basierter Nachrichtenauthentifizierungscode)

HMAC kombiniert eine Hashfunktion mit einem geheimen Schluessel, um sowohl Datenintegritaet als auch Authentifizierung zu gewaehrleisten.

7. Subresource Integrity (SRI)

Browser koennen mit SRI-Hashes verifizieren, dass abgerufene Ressourcen nicht manipuliert wurden.

8. Datendeduplizierung

Hashfunktionen identifizieren doppelte Datenbloecke in Speichersystemen.

Sicherheitsueberlegungen

Bekannte Schwachstellen

AlgorithmusStatusBekannte Angriffe
MD5GebrochenKollisionsangriffe, praktische Faelschung
SHA-1GebrochenSHAttered-Kollisionsangriff (2017)
SHA-256SicherKeine bekannten praktischen Angriffe
SHA-512SicherKeine bekannten praktischen Angriffe
SHA-3SicherKeine bekannten praktischen Angriffe
BLAKE3SicherKeine bekannten praktischen Angriffe

Den richtigen Hash-Algorithmus waehlen

Fuer allgemeines Hashing (Pruefsummen, Datenintegritaet):

  • SHA-256 fuer sicherheitskritische Anwendungen
  • BLAKE3 fuer leistungskritische Anwendungen
  • MD5 ist akzeptabel fuer nicht-sicherheitsrelevante Pruefsummen

Fuer Passwort-Hashing:

  • Argon2id (beste Wahl)
  • bcrypt (bewaehrt)
  • Niemals reines SHA-256/SHA-512

Laengenerweiterungsangriffe

SHA-256 und SHA-512 (aber nicht SHA-3 oder BLAKE3) sind anfaellig fuer Laengenerweiterungsangriffe. Loesung: Verwenden Sie HMAC statt roher Hashfunktionen fuer die Authentifizierung.

// Anfaellig fuer Laengenerweiterungsangriff
const token = sha256(secret + message);

// Sicher: HMAC verwenden
const token = hmacSha256(secret, message);

Leistungsvergleich

AlgorithmusGeschwindigkeit (MB/s)Relative Geschwindigkeit
MD5ca. 7001,4x
SHA-1ca. 5501,1x
SHA-256ca. 5001,0x (Basis)
SHA-512ca. 6001,2x (auf 64-Bit)
SHA-3-256ca. 4000,8x
BLAKE3ca. 3000+6,0x+

Fazit

Kryptografische Hashfunktionen sind grundlegende Bausteine moderner Datenverarbeitung und Sicherheit. Das Verstaendnis der Eigenschaften, Staerken und geeigneten Anwendungsfaelle verschiedener Hash-Algorithmen ist fuer jeden Entwickler, der mit Sicherheit, Datenintegritaet oder verteilten Systemen arbeitet, unverzichtbar.

Wichtigste Erkenntnisse:

  1. SHA-256 ist der sichere Standard fuer die meisten kryptografischen Hash-Anforderungen
  2. Verwenden Sie niemals MD5 oder SHA-1 fuer Sicherheitszwecke
  3. Verwenden Sie dediziertes Passwort-Hashing (Argon2id, bcrypt) — niemals reine Hashfunktionen
  4. HMAC schuetzt vor Laengenerweiterungsangriffen — verwenden Sie es fuer Authentifizierung
  5. BLAKE3 ist der Leistungschampion, wenn Geschwindigkeit gefragt ist
  6. Der Lawineneffekt ist Ihr Freund — kleine Eingabeaenderungen erzeugen voellig andere Hashes
  7. Kollisionsresistenz zaehlt — waehlen Sie Algorithmen ohne bekannte praktische Kollisionen

Fuer schnelle Hash-Generierung und -Vergleich speichern Sie unser Hash-Generator-Tool. Es unterstuetzt MD5, SHA-1, SHA-256, SHA-384 und SHA-512.

Verwandte Ressourcen

Häufig gestellte Fragen

D

Über den Autor

Daniel Park

Senior frontend engineer based in Seoul. Seven years of experience building web applications at Korean SaaS companies, with a focus on developer tooling, web performance, and privacy-first architecture. Open-source contributor to the JavaScript ecosystem and founder of ToolPal.

Mehr erfahren

Artikel teilen

XLinkedIn

Verwandte Beiträge