Le cryptage des mots de passe masque les mots de passe des utilisateurs afin qu'ils deviennent difficiles à deviner ou à décoder. C'est une étape essentielle dans le développement d'un logiciel sécurisé 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à qu'intervient bcrypt.
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 de la langue qui offre un cryptage de mot de passe unique. Lors du cryptage de votre chaîne, il génère par défaut des caractères aléatoires supplémentaires (sel) 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, uniquement le code d'octet. Donc, pour commencer, vous allez d'abord encoder une chaîne de mot de passe entrante avant de la transmettre à bcrypt pour le chiffrer.
L'encodage n'est pas la même chose que le cryptage. Il garantit uniquement qu'une chaîne devient lisible par une machine avant qu'un algorithme de chiffrement ne puisse la masquer.
Crypter un mot de passe en Python avec bcrypt
Le chiffrement du mot de passe bcrypt est facile avec Python. Nous allons nous concentrer sur la façon de le faire sans utiliser de framework. Mais pas de soucis, il suit le même processus dans les frameworks une fois que vous savez stocker les entrées de vos utilisateurs et les lire à partir de la base de données.
Installer et configurer bcrypt
Si vous ne l'avez pas déjà fait, activer un environnement virtuel Python à la racine de votre projet. Ensuite, installez bcrypt en utilisant pépin:
pip installer bcrpyt
Commencer à crypter les mots de passe
Une fois installé, voyons comment crypter une chaîne à l'aide de bcrypt :
# Importer bcrypt:
importer bcrypt
mot de passe = "mypasswordstring"
# Encodez le mot de passe dans un code d'octets utf-8 lisible :
mot de passe = mot de passe.encode('utf-8')
# Hachez le mot de passe encodé et générez un salt :
hashedPassword = bcrypt.hashpw (mot de passe, bcrypt.gensalt())
imprimer (mot de passe haché)
Lorsque vous exécuter le code Python ci-dessus, il imprime une chaîne d'octets cryptée. La sortie, cependant, change chaque fois que vous exécutez le script. C'est ainsi que bcrypt garantit que chaque utilisateur dispose d'un mot de passe crypté de manière unique.
C'est pour le cryptage des mots de passe, au fait.
Comment comparer et confirmer les mots de passe avec bcrypt
Que faire si vous souhaitez stocker le mot de passe haché et confirmer plus tard qu'il correspond au mot de passe fourni par l'utilisateur lors de l'authentification ?
C'est facile. Il 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 les chaînes d'octets, vous devrez également encoder le mot de passe d'authentification avant de le comparer avec celui de la base de données. Essentiellement, vous vérifierez une entrée d'authentification codée avec le mot de passe codé codé déjà stocké dans votre base de données.
En utilisant des entrées Python factices, voyons comment cela fonctionne en pratique :
importer bcrypt
#stockez votre mot de passe:
mot de passe = str (input("mot de passe d'entrée: "))
# Encoder le mot de passe enregistré:
mot de passe = mot de passe.encode('utf-8')
# Crypter le mot de passe stocké:
haché = bcrypt.hashpw (mot de passe, bcrypt.gensalt (10))
# Créez un champ de saisie de mot de passe d'authentification pour vérifier si un utilisateur saisit le bon mot de passe:
check = str (input ("vérifier le mot de passe: "))
# 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 celui stocké:
if bcrypt.checkpw (vérifier, haché) :
print("connexion réussie")
autre:
print("mot de passe incorrect")
Le code ci-dessus vous demande de saisir un nouveau mot de passe lorsque vous l'exécutez. Python stocke cela en mémoire. Vous fournirez ensuite 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 chiffré précédemment stocké. Sinon, il affiche le message d'échec enveloppé dans le autre déclaration:
L'ensemble du concept est le même que de stocker un mot de passe dans une base de données lors de l'enregistrement et de le fournir plus tard lors de l'authentification.
Augmentez le chiffrement avec bcrypt
Bien que nous ayons seulement démontré le fonctionnement de bcrypt en stockant des mots de passe cryptés dans une mémoire courte Python simple, son utilisation ultime est dans les applications de base d'utilisateurs réelles.
Néanmoins, ce didacticiel montre les manières fondamentales 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 servir les champs d'enregistrement et d'authentification. Et bien sûr, vous stockerez les mots de passe cryptés dans une base de données réelle et les lirez lors de la comparaison des mots de passe.
Tout le monde parle de cryptage, mais vous vous retrouvez perdu ou confus? Voici quelques termes de cryptage de clé que vous devez connaître.
Lire la suite
- La programmation
- Python
- La programmation
- Sécurité
Idowu est passionné par tout ce qui concerne les technologies intelligentes et la productivité. Pendant son temps libre, il joue avec le codage et passe à l'échiquier quand il s'ennuie, mais il aime aussi de temps en temps rompre avec la routine. Sa passion pour montrer aux gens la voie à suivre avec la technologie moderne le motive à écrire davantage.
Abonnez-vous à notre newsletter
Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !
Cliquez ici pour vous abonner