Dans PHP, la fonction crypte () est une fonction de chiffrement couramment utilisée, qui est principalement utilisée pour crypter les chaînes à sens unique, en particulier lorsqu'il s'agit de stockage de mot de passe. Cet article analysera les paramètres de la fonction crypt () en détail et démontrera à travers des exemples comment crypter en toute sécurité les chaînes en utilisant la fonction Crypt () de PHP.
Crypt () est une fonction de chiffrement intégrée dans PHP et est implémenté en fonction de la fonction Crypt () d'Unix. Il utilise différents algorithmes de chiffrement (tels que DES, MD5, Blowfish, SHA-256, SHA-512, etc.) pour crypter la chaîne d'entrée et renvoyer la chaîne cryptée.
Prototype de fonction:
string crypt ( string $str [, string $salt ] )
$ STR : Une chaîne qui doit être cryptée, généralement un mot de passe.
$ Salt (facultatif): utilisé pour spécifier l'algorithme de chiffrement et la chaîne salée. Différents sels déterminent l'algorithme de chiffrement et les résultats.
Il s'agit d'une chaîne en texte clair à crypter, généralement le mot de passe de l'utilisateur.
Les paramètres de sel sont la clé pour déterminer l'algorithme de chiffrement et les résultats. Différents formats de sel représentent différents algorithmes:
Le cryptage par défaut <br> Sel avec une longueur de 2 caractères, par exemple: "AB"
Il s'agit de la méthode de cryptage la plus originale, avec une sécurité faible et n'est pas recommandée.
Encryption MD5 <br> Commencez par 1 $ et suivi d'un sel de 8 caractères pouvant aller, par exemple: "1 $ M66NET12 $"
Ceci est chiffré à l'aide de l'algorithme MD5.
Cryptage Blowfish <br> Commencez par 2A $ , 2 $ $ , 2 milliards de dollars, etc., suivis d'un numéro à 2 chiffres pour représenter le facteur de coût et le sel à 22 chiffres, par exemple: "2 ans $ 10 $ M66NETSATSTSTSALTSALTSALTSA $"
Blowfish est un algorithme relativement sûr.
Cryptage SHA-256 <br> Commencez avec 5 $ puis en sel, par exemple: "5 $ M66 M66 $"
SHA-512 Encryption <br> Commencez par 6 $ puis en sel, par exemple: "6 $ M66 M66 $"
// MD5 Exemple de sel
$salt_md5 = '$1$m66net12$';
// Blowfish Exemple de sel,10 C'est le facteur de coût(cost factor)
$salt_blowfish = '$2y$10$m66netsaltsaltsaltsa$';
// SHA-256 Exemple de sel
$salt_sha256 = '$5$m66net$';
// SHA-512 Exemple de sel
$salt_sha512 = '$6$m66net$';
Ce qui suit est quelques exemples pour montrer comment crypter les chaînes à l'aide de la fonction crypte () .
$password = "mypassword";
$salt = "m6"; // 2Caractère de caractère
$hashed = crypt($password, $salt);
echo "DESRésultats du chiffrement:" . $hashed;
$password = "mypassword";
$salt = '$1$m66net12$'; // par $1$ Le sel au début
$hashed = crypt($password, $salt);
echo "MD5Résultats du chiffrement:" . $hashed;
$password = "mypassword";
$salt = '$2y$10$m66netsaltsaltsaltsa$'; // Blowfish,coût10
$hashed = crypt($password, $salt);
echo "BlowfishRésultats du chiffrement:" . $hashed;
$password = "mypassword";
$salt = '$6$m66net$';
$hashed = crypt($password, $salt);
echo "SHA-512Résultats du chiffrement:" . $hashed;
Après avoir chiffré le mot de passe, réencroignez le mot de passe entré avec le même sel lors de la vérification, puis comparez si les résultats sont les mêmes.
// Supposons que le hachage de mot de passe enregistré dans la base de données
$stored_hash = '$6$m66net$........'; // 从数据库取出的Résultats du chiffrement
// Mot de passe entré lorsque l'utilisateur se connecte
$input_password = "mypassword";
// Retirer le sel,Généralement stored_hash Les premières parties,La longueur spécifique dépend de l'algorithme
$salt = substr($stored_hash, 0, strrpos($stored_hash, '$') + 1);
// Reaminpter le mot de passe avec le même sel
$input_hash = crypt($input_password, $salt);
if ($input_hash === $stored_hash) {
echo "La vérification du mot de passe a réussi";
} else {
echo "La vérification du mot de passe a échoué";
}
La fonction crypte () prend en charge une variété d'algorithmes de chiffrement et est déterminée par les paramètres de sel.
Il est recommandé d'utiliser l'algorithme Blowfish ( 2 ans $ ) ou SHA-512 ( 6 $ ), ce qui est plus sûr.
Le sel doit être aléatoire et unique et doit être dans le bon format.
Lors de la vérification du mot de passe, cryptez à nouveau le mot de passe en utilisant le sel dans la valeur de hachage cryptée, puis comparez.