Maison > Article > développement back-end > Technologie de cryptage de hachage en PHP et FAQ
PHP est l'un des langages de script côté serveur les plus couramment utilisés au monde, et sa technologie de cryptage et de sécurité a également attiré beaucoup d'attention. Parmi eux, la technologie de cryptage par hachage est une méthode de cryptage largement utilisée. Cet article présentera en détail la technologie de cryptage de hachage en PHP, ainsi que les réponses aux questions courantes.
1. Le principe de la technologie de cryptage par hachage
L'algorithme de hachage est un algorithme de cryptage unidirectionnel. Plus précisément, il saisit des informations de n'importe quelle longueur et, après des opérations complexes, génère une valeur de hachage de longueur fixe (valeur de hachage), appelée valeur de hachage.
La caractéristique de l'algorithme de hachage est que quelle que soit la taille des données d'origine d'entrée, la valeur de hachage de sortie a une longueur fixe, et la même entrée de données d'origine, la valeur de hachage générée est toujours la même. Par conséquent, il peut facilement vérifier l’intégrité des données.
Les algorithmes de hachage courants incluent MD5, SHA-1, SHA-256, etc. Prenons MD5 comme exemple pour expliquer les principes de base du cryptage par hachage.
MD5 est un algorithme de hachage de 32 bits qui convertit les données d'entrée de n'importe quelle longueur en une sortie de 128 bits. Le processus spécifique est le suivant :
a Fonction d'arrondi F. Pour chaque bloc de données de 512 bits, 64 opérations F sont effectuées. La fonction F prend deux paramètres de 128 bits en entrée et génère un résultat de 128 bits.
b.Opération d'addition. Ajoutez la sortie de la fonction ronde F et le résultat intermédiaire du bloc de données actuel et obtenez un nouveau résultat intermédiaire de 128 bits.
c.Opération de remplacement. Remplacez le nouveau résultat intermédiaire de 128 bits selon des règles spécifiques.
d. Générer une valeur de hachage. Après avoir traité tous les blocs de données, une valeur de hachage de 128 bits est finalement générée.
2. Fonction de cryptage de hachage en PHP
En PHP, il est très simple d'utiliser l'algorithme de cryptage de hachage. PHP est livré avec plusieurs fonctions de hachage, très pratiques à utiliser. Voici quelques-unes des fonctions de hachage les plus couramment utilisées en PHP :
Cette fonction saisira la chaîne $str et effectuera un hachage MD5 pour obtenir une valeur de hachage de 32 bits. . Si $raw_output est défini sur true, une valeur de hachage au format binaire RAW 16 bits est générée.
Cette fonction effectue un hachage SHA-1 de la chaîne d'entrée $str pour obtenir une valeur de hachage de 40 bits. Si $raw_output est défini sur true, une valeur de hachage au format binaire RAW de 20 bits est générée.
Cette fonction prend en charge plusieurs algorithmes de hachage et peut personnaliser les données d'entrée. Parmi eux, $algo est l'algorithme spécifié, $data est les données d'entrée et $raw_output indique s'il faut sortir la valeur de hachage au format binaire RAW. Les algorithmes couramment utilisés incluent MD5, SHA-1, SHA-256, etc.
Cette fonction est une nouvelle fonction après PHP 5.5 et est spécialement utilisée pour le cryptage des mots de passe. Il prend en charge plusieurs algorithmes de hachage, notamment bcrypt, argon2i, etc. L'algorithme spécifique doit être sélectionné en fonction de vos propres besoins. $password est le mot de passe à chiffrer, $algo est l'algorithme de hachage et $options sont les options de l'algorithme.
Cette fonction est utilisée pour vérifier si le mot de passe est correct. $password est le mot de passe à vérifier et $hash est la valeur de hachage du mot de passe. Cette fonction identifiera automatiquement l'algorithme de hachage du mot de passe et le vérifiera.
3. Questions fréquemment posées
L'algorithme de cryptage de hachage lui-même est une méthode de cryptage irréversible, c'est-à-dire que les données originales ne peuvent pas être déduites sur la base de la valeur de hachage. Il bénéficie donc d’une haute sécurité. Cependant, étant donné que les données d'entrée peuvent être de n'importe quelle longueur, toutes les données possibles peuvent même être générées par force brute, puis hachées pour générer une valeur de hachage. La quantité de calcul nécessaire pour y parvenir est énorme et irréaliste, mais cela ne signifie pas que le cryptage par hachage est absolument sécurisé.
Étant donné que le cryptage par hachage est une méthode de cryptage unidirectionnelle, il n'existe pas de méthode de décryptage au sens habituel du terme. Cependant, étant donné que certains algorithmes présentent des problèmes de sécurité, le craquage par force brute peut être effectué par certains moyens techniques.
Credential Stuffing Attack (Hash Collision Attack) est une méthode d'attaque contre les algorithmes de hachage. Elle profite de la fonctionnalité de l'algorithme de hachage selon laquelle les mêmes données d'entrée peuvent toujours générer la même valeur de hachage pour trouver deux données différentes afin qu'elles aient. la même valeur de hachage. Cette attaque peut perturber la sécurité d'origine de l'algorithme de hachage. Cependant, cela nécessite une très grande quantité de calculs et est souvent irréaliste.
L'algorithme de cryptage par hachage lui-même est une méthode de cryptage relativement sécurisée, mais en raison de différents algorithmes et de problèmes de mise en œuvre, il peut toujours y avoir des risques de sécurité. Par conséquent, dans les applications pratiques, des algorithmes à haute résistance doivent être sélectionnés et associés à des valeurs de sel (Salt) et des options de cryptage appropriées pour améliorer la sécurité.
Résumé
Le cryptage par hachage est une méthode de cryptage très courante, qui peut garantir efficacement l'intégrité et la confidentialité des données. En PHP, il est également très pratique d'utiliser le cryptage par hachage. PHP est livré avec plusieurs fonctions de cryptage. Cependant, le chiffrement par hachage n’est pas absolument sécurisé et différents algorithmes et options de chiffrement doivent être sélectionnés en fonction de différents scénarios pour améliorer la sécurité.
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!