Maison >développement back-end >tutoriel php >Comment PHP peut-il chiffrer et déchiffrer les données en toute sécurité, et comment gère-t-il le hachage de mot de passe ?

Comment PHP peut-il chiffrer et déchiffrer les données en toute sécurité, et comment gère-t-il le hachage de mot de passe ?

DDD
DDDoriginal
2024-12-10 08:15:09136parcourir

How Can PHP Securely Encrypt and Decrypt Data, and How Does it Handle Password Hashing?

Cryptage et décryptage en PHP

Cryptage des données sensibles

PHP propose divers algorithmes de chiffrement et méthodes pour protéger les données sensibles stockées dans les bases de données. Vous pouvez chiffrer des champs spécifiques, tels que Fname, Lname et Email, à l'aide de chiffrements symétriques comme AES-256-CBC. De plus, vous devez générer un vecteur d'initialisation (IV) pour chaque opération de cryptage et le stocker pour le décryptage.

Processus de décryptage

Pour décrypter les données cryptées, suivez un processus similaire. Vous aurez besoin de la même clé de cryptage et de la même IV que celles utilisées lors du cryptage. Le décryptage donne les valeurs originales en texte brut.

Hachage unidirectionnel avec SHA256 et Salt

Pour la sécurité des mots de passe, vous pouvez hacher les mots de passe en utilisant SHA256 en conjonction avec un sel fort. Implémentez une fonction qui génère un sel aléatoire et le combine avec le mot de passe avant le hachage. Cela ajoute une couche supplémentaire de protection contre les attaques par force brute.

Exemple :

function generatePasswordHash($password) {
    $salt = bin2hex(openssl_random_pseudo_bytes(16));
    return hash('sha256', $salt . $password) . $salt;
}

Vérification des mots de passe

Lors de la vérification des mots de passe, utilisez une fonction de comparaison à temps constant pour éviter les attaques temporelles. Pour chaque tentative de connexion, hachez à nouveau le mot de passe fourni en utilisant le même sel que le hachage d'origine et comparez les résultats.

Exemple :

function verifyPassword($suppliedPassword, $storedHash) {
    $saltedPassword = substr($storedHash, 64);
    return hash('sha256', $saltedPassword . $suppliedPassword) == $storedHash;
}

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn