bcrypt – hachage de mots de passe en Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction

La protection des mots de passe utilisateur est une tâche cruciale dans le développement logiciel moderne. À l'ère des cybermenaces en constante augmentation, l'utilisation de fonctions de hachage simples ou obsolètes comme MD5 ou SHA-1 présente des risques de sécurité majeurs. Ces algorithmes sont vulnérables aux attaques par rainbow tables et leur rapidité d'exécution les rend faciles à casser avec les méthodes modernes.

Bcrypt est une fonction de hachage cryptographique adaptative, spécialement conçue pour le stockage sécurisé des mots de passe. Créé en 1999 par Niels Provos et David Mazières, cet algorithme est basé sur le chiffrement Blowfish et intègre un système de salage automatique, le rendant extrêmement résistant à divers types d'attaques.

Dans l'écosystème Python, bcrypt est disponible via la bibliothèque du même nom, un wrapper Python de l'implémentation originale OpenBSD. Cette bibliothèque est utilisée par des millions de développeurs dans le monde et est considérée comme la référence en matière de hachage de mots de passe pour les applications Python.

Qu'est-ce que la bibliothèque bcrypt

La bibliothèque bcrypt pour Python est un outil fiable et éprouvé pour le hachage cryptographique de mots de passe. Il s'agit d'un wrapper Python autour de l'implémentation C originale de bcrypt, garantissant hautes performances et robustesse.

Fonctionnalités clés de bcrypt

Adaptabilité : La force principale de bcrypt réside dans sa nature adaptative. Le paramètre "cost factor" permet d'augmenter la complexité des calculs à mesure que la puissance des ordinateurs croît, assurant une protection à long terme.

Salage intégré : Chaque hachage inclut automatiquement un sel unique, ce qui empêche l'utilisation de rainbow tables pour casser les mots de passe.

Robustesse cryptographique : L'utilisation de l'algorithme Blowfish avec de multiples tours de chiffrement offre un haut niveau de protection cryptographique.

Standardisation : Bcrypt suit un format standardisé, garantissant la compatibilité entre différentes implémentations et plateformes.

Installation et configuration

Installation avec pip

L'installation de la bibliothèque bcrypt se fait de manière standard via le gestionnaire de paquets pip :

pip install bcrypt

Prérequis système

La bibliothèque bcrypt a des prérequis système minimes :

  • Python 3.6 ou version ultérieure
  • Systèmes d'exploitation supportés : Windows, macOS, Linux
  • Compilation automatique des extensions C (nécessite un compilateur)

Vérification de l'installation

Après l'installation, vous pouvez vérifier le bon fonctionnement de la bibliothèque :

import bcrypt
print(bcrypt.__version__)

Fondamentaux de bcrypt

Principe de fonctionnement de l'algorithme

Bcrypt fonctionne selon le schéma suivant :

  1. Génération d'un sel aléatoire
  2. Application de l'algorithme Blowfish avec un nombre défini de tours
  3. Création du hachage final incluant le sel et les paramètres

Format du hachage de sortie

Le hachage bcrypt résultant a la structure suivante :

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

Où :

  • $2b$ — identifiant de version de l'algorithme
  • 12 — paramètre cost (nombre de tours)
  • R9h/cIPz0gi.URNNX3kh2O — sel (22 caractères)
  • PST9/PgBkqquzi.Ss7KIUgO2t0jWMUW — le hachage lui-même (31 caractères)

Démarrage rapide

Exemple de base d'utilisation de bcrypt :

import bcrypt

# Le mot de passe doit être en format bytes
password = b"supersecret123"

# Génération du hachage
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(f"Hachage : {hashed}")

# Vérification du mot de passe
if bcrypt.ch                    

Recommendations