Suivez ce tutoriel pour apprendre bcrypt de l’installation au cryptage.

Le cryptage des mots de passe masque les mots de passe des utilisateurs afin qu’ils deviennent difficiles à deviner ou à décoder. Il s’agit d’une étape essentielle dans le développement de logiciels de base sécurisés pour les utilisateurs. Que vous en construisiez un avec Flask ou un autre Framework Python léger, vous ne pouvez pas ignorer cette étape. C’est là que bcrypt entre en jeu.

Nous allons vous montrer comment utiliser bcrypt pour hacher votre mot de passe en Python.

Comment fonctionne bcrypt

Bcrypt est une bibliothèque de hachage indépendante du langage qui offre un chiffrement unique des mots de passe. Lors du cryptage de votre chaîne de caractères, elle génère des caractères aléatoires supplémentaires (sel) par défaut pour renforcer la sécurité de votre mot de passe.

En option, vous pouvez également spécifier le nombre de caractères supplémentaires que vous souhaitez ajouter à une chaîne entrante.

La bibliothèque bcrypt ne lit pas les chaînes brutes, mais uniquement les codes d’octets. Ainsi, pour commencer, vous devrez d’abord encoder une chaîne de mots de passe avant de la transmettre à bcrypt pour qu’elle soit chiffrée.

Le codage n’est pas la même chose que le cryptage. Il permet seulement de s’assurer qu’une chaîne devient lisible par une machine avant qu’un algorithme de cryptage ne puisse la masquer.

Cryptage d’un mot de passe en Python avec bcrypt

Le chiffrement des mots de passe avec bcrypt est facile avec Python. Nous allons nous concentrer sur la manière de le faire sans utiliser de framework. Mais pas d’inquiétude, cela suit le même processus dans les frameworks une fois que vous savez comment stocker les entrées de vos utilisateurs et les lire depuis la base de données.

Installation et configuration de bcrypt

Si vous ne l’avez pas encore fait, activez un environnement virtuel Python à la racine de votre projet. Puis installez bcrypt en utilisant pip :

pip install bcrpyt

Commencez à crypter les mots de passe

Une fois installé, voyons comment crypter une chaîne de caractères avec bcrypt :

Importez bcrypt :

import bcrypt
password = « mypasswordstring »

Encodez le mot de passe dans un code d’octets utf-8 lisible :

password = password.encode(‘utf-8’)

Hachez le mot de passe encodé et générez un sel :

hashedPassword = bcrypt.hashpw(password, bcrypt.gensalt())
print(hashedPassword)

Lorsque vous exécutez le code Python ci-dessus, il imprime une chaîne d’octets chiffrée. La sortie, cependant, change chaque fois que vous exécutez le script. C’est ainsi que bcrypt s’assure que chaque utilisateur a un mot de passe crypté de manière unique.

C’est pour le cryptage des mots de passe, d’ailleurs.

Comment comparer et confirmer les mots de passe avec bcrypt

Que faire si vous souhaitez stocker le mot de passe haché et confirmer ultérieurement qu’il correspond au mot de passe fourni par un utilisateur lors de l’authentification ?

C’est très simple. Il vous suffit de comparer le mot de passe d’authentification avec celui stocké dans la base de données (ou en mémoire dans ce cas).

Et comme bcrypt ne lit que des chaînes d’octets, vous devrez également coder le mot de passe d’authentification avant de le comparer à celui de la base de données. En fait, vous recoupez une entrée d’authentification codée avec le mot de passe haché codé déjà stocké dans votre base de données.

En utilisant des entrées Python fictives, voyons comment cela fonctionne en pratique :

import bcrypt

Stockez votre mot de passe :

password = str(input(« input password : « ))

Encodez le mot de passe stocké :

password = password.encode(‘utf-8’)

Cryptez le mot de passe stocké :

hashed = bcrypt.hashpw(password, bcrypt.gensalt(10))

Créer un champ de saisie du mot de passe d’authentification pour vérifier si un utilisateur saisit le bon mot de passe :

check = str(input(« check password : « ))

Encodez également le mot de passe d’authentification :

check = check.encode(‘utf-8’)

Utilisez des conditions pour comparer le mot de passe d’authentification avec le mot de passe stocké :

if bcrypt.checkpw(check, hashed) :
print(« login success »)
else :
print(« mot de passe incorrect »)

Le code ci-dessus vous demande de saisir un nouveau mot de passe lorsque vous l’exécutez. Python le stocke en mémoire. Vous devrez ensuite fournir le même mot de passe (connu de vous seul) dans le champ d’authentification.

Python imprime un message de réussite si le mot de passe comparé correspond au mot de passe crypté précédemment stocké. Sinon, il affiche le message d’échec enveloppé dans l’instruction else :
Sortie CLI de la vérification du mot de passe bcrypt

Le concept global est le même que celui qui consiste à stocker un mot de passe dans une base de données lors de l’enregistrement et à le fournir ultérieurement lors de l’authentification.

Augmentation du chiffrement avec bcrypt

Bien que nous ayons seulement démontré comment bcrypt fonctionne en stockant des mots de passe cryptés dans la mémoire courte Python, son utilisation finale est dans les applications de base utilisateur réelles.

Néanmoins, ce tutoriel montre les moyens fondamentaux de structurer votre code pour y parvenir, même dans des scénarios réels. Par exemple, si vous utilisez Flask, vous pouvez remplacer les entrées par des formulaires Web distincts pour les champs d’inscription et d’authentification. Et bien sûr, vous stockerez les mots de passe cryptés dans une base de données réelle et lirez à partir de celle-ci lors de la comparaison des mots de passe.