Lors du développement du Web, le chiffrement du mot de passe est un lien clé pour protéger la sécurité des données des utilisateurs. PHP fournit une variété de méthodes de chiffrement, où la fonction crypt () est un outil de cryptage de base mais très utile. Il peut crypter les chaînes à sens unique et est souvent utilisé pour le hachage du mot de passe. Cet article introduira en détail l'utilisation de la fonction crypt () , la syntaxe de base, différents algorithmes de cryptage, ainsi que des exemples et des précautions dans des applications pratiques.
Crypt () est une fonction de chiffrement intégrée dans PHP, utilisée pour crypter les chaînes. Il utilise un algorithme de chiffrement unidirectionnel, ce qui signifie que le résultat de cryptage est irréversible, ce qui est très adapté au stockage de données sensibles telles que des mots de passe.
Alors que PHP fournit également des méthodes de cryptage modernes telles que Password_Hash () et Hash () , comprendre comment Crypt () fonctionne toujours pour aider les développeurs à maîtriser les bases du chiffrement.
string crypt ( string $string [, string $salt ] )
$ String : La chaîne d'origine qui doit être cryptée.
$ SALT : Paramètre facultatif, spécifiant la "valeur de sel" utilisée pour le cryptage. Différentes valeurs de sel et algorithmes affecteront le résultat de chiffrement final.
La fonction crypt () prend en charge plusieurs algorithmes de chiffrement, selon le format de valeur de sel que vous fournissez. Voici quelques formats de valeur de sel couramment utilisés et leurs algorithmes correspondants:
DES (par défaut)
crypt('mypassword', 'rl');
Md5
crypt('mypassword', '$1$usesomesalt$');
Flowfish
crypt('mypassword', '$2y$10$abcdefghijklmnopqrstuv');
SHA-256
crypt('mypassword', '$5$rounds=5000$anexamplestringforsalt$');
SHA-512
crypt('mypassword', '$6$rounds=5000$anexamplestringforsalt$');
<?php
$password = 'secure123';
$salt = '$2y$10$usesomesillystringforex$';
$hashed = crypt($password, $salt);
echo $hashed;
?>
Le résultat de sortie est une chaîne de chaînes cryptées. Même s'il est exécuté à nouveau, le résultat est le même, ce qui convient à la comparaison de mot de passe lorsque l'utilisateur se connecte et Verifys.
Lors de la vérification du mot de passe, vous devez réincrypter le mot de passe entré par l'utilisateur avec la même valeur de sel, puis le comparer avec la valeur de hachage stockée dans la base de données:
<?php
$input_password = 'secure123';
$stored_hash = '$2y$10$usesomesillystringforex$JeW8SuJSvSpEtBCUJ8JXoeK1G5Lmbl9Hz7tpIdAd4wczP8t9UO1nO';
if (crypt($input_password, $stored_hash) === $stored_hash) {
echo 'La vérification du mot de passe a réussi';
} else {
echo 'Mot de passe d'erreur';
}
?>
Lorsque vous utilisez Crypt () , il est recommandé de choisir Blowfish ou des algorithmes de sécurité supérieurs.
Crypt () ne générera pas automatiquement les valeurs de sel et les développeurs doivent les passer manuellement.
PHP 5.3 a amélioré la prise en charge des algorithmes, mais il est recommandé d'utiliser Password_Hash () au lieu de crypte () dans les versions ultérieures.
Lorsqu'un utilisateur s'inscrit, un mot de passe crypté peut être généré et stocké dans la base de données:
<?php
$password = 'mypassword';
$salt = '$2y$10$' . substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);
$hash = crypt($password, $salt);
// Volonté $hash Enregistrer dans la base de données
echo 'Enregistré avec succès,Le mot de passe de chiffrement est:' . $hash;
?>
Crypt () est une puissante fonction de chiffrement fournie par PHP. En fournissant différents formats de valeur de sel, plusieurs algorithmes de chiffrement peuvent être utilisés pour crypter les chaînes. Bien qu'il soit recommandé d'utiliser des fonctions telles que Password_Hash () pour gérer la sécurité de mot de passe dans le développement moderne, la compréhension du mécanisme de crypte () peut aider à jeter une bonne base pour le développement de la sécurité.
Crypt () joue toujours un rôle important lorsque vous avez besoin d'avoir un algorithme personnalisé ou d'être compatible avec les anciens projets. Qu'il s'agisse de construire un système de connexion, de stocker des données sensibles ou des mécanismes d'authentification du traitement, l'utilisation rationnelle des fonctions de chiffrement est toujours une partie indispensable pour assurer la sécurité du site Web.