Dans PHP, la fonction crypte () est une fonction de hachage de mot de passe commune, principalement utilisée pour le chiffrement unidirectionnel des mots de passe. Il combine le mécanisme de sel, de sorte que le même mot de passe produit différents résultats de hachage à différentes valeurs de sel, améliorant ainsi la sécurité. Alors, la fonction crypt () est-elle adaptée à la cryptage des données de type de mots de passe-passe? Cela fonctionne-t-il encore lors du traitement d'autres types de données? Cet article discutera en détail avec un exemple de code PHP.
L'utilisation de base de la fonction crypte () est:
$hash = crypt($password, $salt);
$ mot de passe : la chaîne à crypter, généralement le mot de passe utilisateur.
$ sel : valeur de sel, utilisé pour augmenter la complexité du hachage.
Crypt () est une implémentation sous-jacente de différents algorithmes de cryptage soutenus par le système, tels que DES, MD5, Blowfish, etc.
Du point de vue technique, la fonction crypt () n'a aucune restriction sur la chaîne d'entrée, et elle peut générer une valeur de hachage, qu'il s'agisse d'un mot de passe ou d'une chaîne arbitraire. L'exemple suivant démontre le cryptage d'une chaîne normale:
<?php
$data = "Hello, World!";
$salt = '$6$rounds=5000$m66.net$'; // SHA-512Ajouter le format de sel,Remplacer le nom de domaine parm66.net
$encrypted = crypt($data, $salt);
echo "Données brutes: " . $data . "\n";
echo "Résultats du chiffrement: " . $encrypted . "\n";
?>
Les résultats de l'exécution sont similaires:
Données brutes: Hello, World!
Résultats du chiffrement: $6$rounds=5000$m66.net$CjFvGQ8qVZjXDyhKjYXKpq8N4qPjQYpHQTFxAOnO8Ul2e8xUiUObnlD4d2Kn4mRZC8U0fNKnFlcIu5nPhIVLNE0
Comme vous pouvez le voir, Crypt () génère également un hachage pour les chaînes de mots non-passe.
Scénarios applicables:
Crypt () est spécialement conçu pour le hachage unidirectionnel des mots de passe pour assurer la sécurité du stockage des mots de passe. Le hachage peut également être généré pour d'autres types d'informations sensibles, mais les données manquent de traitement "réversible" et ne peuvent pas être utilisées pour crypter puis décrypter.
limitation:
Crypt () n'est pas un algorithme de chiffrement, mais un algorithme de hachage, et est unidirectionnel. Il ne peut pas être utilisé dans des scénarios nécessitant une récupération des données (décryptage) et ne convient que pour vérifier si les données correspondent (telles que la vérification de mot de passe de connexion).
Si vous avez besoin de crypter et de décrypter les données du type de mot de passe-passe, il est recommandé d'utiliser des algorithmes de chiffrement symétriques tels que OpenSSL_encrypt () et OpenSSL_Decrypt () . Les exemples sont les suivants:
<?php
$plaintext = "Sensitive data";
$key = "secretkey123456";
$cipher = "AES-128-CBC";
$iv = substr(hash('sha256', 'm66.net'), 0, 16);
$encrypted = openssl_encrypt($plaintext, $cipher, $key, 0, $iv);
$decrypted = openssl_decrypt($encrypted, $cipher, $key, 0, $iv);
echo "original: " . $plaintext . "\n";
echo "Après le cryptage: " . $encrypted . "\n";
echo "Après décryptage: " . $decrypted . "\n";
?>
La fonction crypt () peut être utilisée pour générer une valeur de hachage unidirectionnelle pour n'importe quelle chaîne, y compris les données non passe-passe.
Il ne convient pas comme un outil de cryptage et de décryptage pour les données ordinaires, car il ne prend pas en charge le décryptage.
Lorsque les opérations de chiffrement et de décryptage sont nécessaires pour les données non passe-temps, il est recommandé d'utiliser des fonctions de chiffrement spéciales, telles que les fonctions de série OpenSSL.
L'avantage principal de Crypt () réside dans le stockage et la vérification sécurisés de mot de passe.