Le hachage est une fonction cryptographique qui ne peut être inversée. Il faut une entrée de taille aléatoire pour produire des valeurs de taille fixe. Ces valeurs de taille fixe sont appelées valeurs de hachage, et la fonction cryptographique est appelée fonction de hachage. Le hachage a une nature cohérente et prévisible, ce qui signifie que la même entrée produira toujours la même valeur de hachage. Il présente également l'effet d'avalanche, ce qui signifie que même un léger changement dans l'entrée entraîne une valeur de hachage radicalement différente, garantissant une sécurité et une incertitude élevées.
Le hachage utilise souvent le hachage salé, où une chaîne aléatoire unique appelée sel est ajoutée à l'entrée avant le hachage, rendant chaque hachage unique même pour des entrées identiques
Le hachage salé est principalement utilisé dans le hachage de mots de passe. L'un de ces algorithmes est l'algorithme bcrypt.
L'algorithme Bcrypt est basé sur l'algorithme de cryptage Blowfish. bcrypt génère un sel unique (chaîne aléatoire) pour chaque mot de passe, puis le sel est combiné avec le mot de passe avant le hachage. . Cela rend Bcrypt résistant aux attaques par force brute.
Génération de sel :
Bcrypt génère un sel aléatoire d'une longueur de 16 octets et généralement au format Base64.
Hachage de la chaîne donnée :
Le sel est combiné avec le mot de passe et la chaîne résultante est transmise via l'algorithme de cryptage Blowfish. bcrypt applique plusieurs cycles de hachage définis par le facteur de travail. Le nombre élevé de tours le rend coûteux en termes de calcul, ce qui améliore sa résistance aux attaques par force brute.
Le facteur de travail, également appelé coût, est défini par la valeur logarithmique de 2. Si le coût est de 12, cela signifie 2^12 tours. Plus le facteur coût est élevé, plus il faut de temps pour générer un hachage, ce qui rend plus difficile pour les attaquants de forcer brutalement les mots de passe.
Format et longueur du hachage Bcrypt :
y$odwBFokG9vTK/BAaRXKKl.9Q8KHXHeYSqpLi/gSNpmzSwQcaJb.gS
La chaîne donnée se compose de :
import hashlib import os import base64
class Bcrypt: def __init__(self, rounds=12, salt_length=22): self.rounds = rounds self.salt_length = salt_length
La classe Bcrypt encapsule la fonctionnalité permettant de hacher et de vérifier les mots de passe
Paramètres :
y$odwBFokG9vTK/BAaRXKKl.9Q8KHXHeYSqpLi/gSNpmzSwQcaJb.gS
La fonction generate_salt crée un sel aléatoire, qui sera une valeur unique qui sera ajoutée aux mots de passe pour garantir que même des mots de passe identiques produisent des hachages différents.
import hashlib import os import base64
La fonction bcrypt_hash hache en toute sécurité le mot de passe avec le sel et le facteur de coût fournis.
et la fonction hash_password génère un hachage sécurisé pour le mot de passe donné avec un sel aléatoire.
class Bcrypt: def __init__(self, rounds=12, salt_length=22): self.rounds = rounds self.salt_length = salt_length
def generate_salt(self, salt_length=None): if salt_length is None: salt_length = self.salt_length return base64.b64encode(os.urandom(salt_length)).decode('utf-8')[:salt_length]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!