Maison >développement back-end >tutoriel php >Cryptage du mot de passe PHP et méthode de stockage sécurisée
Avec le développement et la vulgarisation continus d'Internet, la sécurité des mots de passe des utilisateurs a attiré une attention croissante lors de l'exécution de diverses opérations en ligne. En tant que langage de programmation côté serveur couramment utilisé, PHP possède également son propre ensemble de méthodes d'implémentation pour le cryptage des mots de passe et le stockage sécurisé. Cet article présentera comment PHP crypte et sécurise les mots de passe, aidant ainsi les lecteurs à comprendre et à protéger leurs mots de passe utilisateur.
1. Cryptage des mots de passe
Le cryptage des mots de passe fait référence à la conversion des mots de passe des utilisateurs pour générer une séquence de caractères apparemment aléatoire. Même si un pirate informatique obtient cette séquence de caractères, elle ne peut pas être restaurée avec le mot de passe d'origine. Les algorithmes courants de cryptage de mot de passe incluent MD5, SHA1, bcrypt, etc.
MD5 et SHA1 sont l'un des algorithmes de cryptage de mot de passe les plus courants. En PHP, vous pouvez utiliser les fonctions md5() et sha1() pour le cryptage des mots de passe. Cependant, ces algorithmes risquent de plus en plus d'être piratés par des pirates informatiques, car ils constituent un cryptage unidirectionnel et ne peuvent pas être déchiffrés jusqu'au mot de passe d'origine. Par conséquent, il n'est pas recommandé d'utiliser MD5 et SHA1 pour le cryptage des mots de passe.
Exemple de code :
$password = '123456';
$encrypted_password = md5($password);
echo $encrypted_password; // Sortie : e10adc3949ba59abbe56e057f20f883e
bcrypt est un coffre-fort A et un algorithme de cryptage de mot de passe fiable basé sur l'algorithme de cryptage Blowfish. En PHP, vous pouvez utiliser la fonction password_hash() pour le cryptage du mot de passe. C'est une méthode supportée par PHP 5.5.0 et supérieur.
Exemple de code :
$password = '123456';
$encrypted_password = password_hash($password, PASSWORD_DEFAULT);
echo $encrypted_password; // Sortie : $2y$10$IwyKg5WIr0ZG6oWjbja0zuxw8FdW8GmKyMzyk luZfoyvG 00v4OMu6
Cette fonction générera automatiquement un sel aléatoire valeur et chiffrer après avoir mélangé la valeur salt et le mot de passe. Chaque exécution produira un résultat de chiffrement différent pour augmenter la sécurité du mot de passe.
2. Stockage sécurisé
Le cryptage des mots de passe n'est qu'une partie de la protection des mots de passe. Afin de mieux protéger les mots de passe des utilisateurs, un stockage sécurisé est également requis. Voici quelques méthodes courantes de stockage sécurisé.
Dans la plupart des cas, les mots de passe des utilisateurs sont stockés dans la base de données. Avant de stocker les mots de passe dans la base de données, ils doivent être cryptés à l'aide de l'algorithme de cryptage des mots de passe décrit ci-dessus. Habituellement, le type de données du champ de mot de passe est varchar et la longueur appropriée est définie.
Afin d'augmenter la sécurité des mots de passe, vous pouvez utiliser la méthode "sel" (sel) pour stocker les mots de passe cryptés de manière plus complexe. La valeur salt est une chaîne aléatoire qui est mélangée au mot de passe, puis cryptée et stockée, de sorte que même avec le même mot de passe, le texte chiffré stocké par différents utilisateurs est différent.
Exemple de code :
$password = '123456';
$salt = 'AbCdEfGh';
$encrypted_password = md5($password.$salt);
echo $encrypted_password; a4e1
En plus du stockage dans la base de données et du stockage salt, les mots de passe des utilisateurs peuvent également être stockés à l'aide d'autres méthodes de cryptage, telles que le cryptage RSA. RSA est un algorithme de chiffrement asymétrique qui génère des clés publiques et privées. Le mot de passe de l'utilisateur est d'abord chiffré avec la clé publique puis déchiffré par la clé privée du serveur.
Exemple de code :
$password = '123456';
$public_key = 'public_key_path.pem';
$private_key = 'private_key_path.pem';
$encrypted_password = ''; _mot de passe, file_get_contents($public_key));
file_put_contents('encrypted_password.txt', $encrypted_password);
openssl_private_decrypt(file_get_contents('encrypted_password.txt'), $decrypted_password, file_get_contents($private_key) );
echo $decrypted_password; // Sortie : 123456
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!