bcrypt – Passwort-Hashing in Python

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung

Der Schutz von Benutzerpasswörtern ist eine der wichtigsten Aufgaben in der modernen Softwareentwicklung. In einer Zeit ständig wachsender Cyberbedrohungen stellen einfache oder veraltete Hash-Funktionen wie MD5 oder SHA-1 ein erhebliches Sicherheitsrisiko dar. Diese Algorithmen sind anfällig für Rainbow-Table-Angriffe und haben eine hohe Rechengeschwindigkeit, was sie für moderne Knackmethoden verwundbar macht.

Bcrypt ist eine adaptive kryptografische Hash-Funktion, die speziell für die sichere Speicherung von Passwörtern entwickelt wurde. Der 1999 von Niels Provos und David Mazières entwickelte Algorithmus basiert auf der Blowfish-Chiffre und verfügt über ein integriertes Salt-System, was ihn extrem widerstandsfähig gegen verschiedene Angriffsarten macht.

Im Python-Ökosystem ist bcrypt über die gleichnamige Bibliothek verfügbar, die einen Python-Wrapper für die ursprüngliche OpenBSD-Implementierung darstellt. Diese Bibliothek wird von Millionen von Entwicklern weltweit genutzt und gilt als der Goldstandard für das Passwort-Hashing in Python-Anwendungen.

Was ist die bcrypt-Bibliothek

Die bcrypt-Bibliothek für Python ist ein bewährtes und zuverlässiges Werkzeug für das kryptografische Hashing von Passwörtern. Sie fungiert als Python-Wrapper für die originale C-Implementierung von bcrypt, was hohe Leistung und Zuverlässigkeit gewährleistet.

Hauptmerkmale von bcrypt

Adaptivität: Die Hauptstärke von bcrypt liegt in seiner adaptiven Natur. Der "Cost Factor"-Parameter ermöglicht es, die Rechenkomplexität mit steigender Rechenleistung zu erhöhen und so einen langfristigen Schutz zu gewährleisten.

Integriertes Salt: Jeder Hash enthält automatisch ein eindeutiges Salt, wodurch die Verwendung von Rainbow-Tables zum Knacken von Passwörtern ausgeschlossen wird.

Kryptografische Stärke: Die Verwendung des Blowfish-Algorithmus mit mehreren Verschlüsselungsrunden bietet ein hohes Maß an kryptografischem Schutz.

Standardisierung: Bcrypt folgt einem standardisierten Format, was die Kompatibilität zwischen verschiedenen Implementierungen und Plattformen gewährleistet.

Installation und Einrichtung

Installation mit pip

Die Installation der bcrypt-Bibliothek erfolgt auf dem Standardweg über den Paketmanager pip:

pip install bcrypt

Systemanforderungen

Die bcrypt-Bibliothek hat minimale Systemanforderungen:

  • Python 3.6 oder höher
  • Unterstützte Betriebssysteme: Windows, macOS, Linux
  • Automatische Kompilierung von C-Erweiterungen (erfordert einen Compiler)

Installation überprüfen

Nach der Installation kannst du die korrekte Funktion der Bibliothek überprüfen:

import bcrypt
print(bcrypt.__version__)

Grundlagen der Arbeit mit bcrypt

Funktionsweise des Algorithmus

Bcrypt verwendet das folgende Schema:

  1. Generierung eines zufälligen Salts
  2. Anwendung des Blowfish-Algorithmus mit einer bestimmten Anzahl von Runden
  3. Erstellung des endgültigen Hashes, der Salt und Parameter enthält

Format des Ausgabe-Hashes

Der resultierende bcrypt-Hash hat die folgende Struktur:

$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW

Wobei:

  • $2b$ — die Versionskennung des Algorithmus
  • 12 — der Cost-Parameter (Anzahl der Runden)
  • R9h/cIPz0gi.URNNX3kh2O — das Salt (22 Zeichen)
  • PST9/PgBkqquzi.Ss7KIUgO2t0jWMUW — der eigentliche Hash (31 Zeichen)

Schnellstart

Ein einfaches Beispiel zur Verwendung von bcrypt:

import bcrypt

# Das Passwort muss im Byte-Format vorliegen
password = b"supersecret123"

# Hash generieren
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(f"Hash: {hashed}")

# Passwort überprüfen
if bcrypt.ch                    

Empfehlungen