Maison >développement back-end >tutoriel php >Comment puis-je crypter et décrypter en toute sécurité les mots de passe en PHP ?

Comment puis-je crypter et décrypter en toute sécurité les mots de passe en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 21:32:10749parcourir

How Can I Securely Encrypt and Decrypt Passwords in PHP?

Cryptage bidirectionnel : stockage des mots de passe récupérables

Cryptage et déchiffrement

Pour chiffrer et déchiffrer les mots de passe en PHP, utiliser une classe de cryptage qui encapsule l'étirement des clés, le masquage IV, HMAC vérification et autres mesures de sécurité. Un exemple d'implémentation de classe est fourni :

class Encryption {
    // Cipher and mode used for encryption
    private $cipher;
    private $mode;

    // Constructor (usage example)
    public function __construct($cipher = MCRYPT_BLOWFISH, $mode = MCRYPT_MODE_CBC) {
        $this->cipher = $cipher;
        $this->mode = $mode;
    }

    // Encrypts data
    public function encrypt($data, string $key): string {
        // ...
    }

    // Decrypts data
    public function decrypt($data, string $key): string {
        // ...
    }
}

Choisir l'algorithme le plus sûr

Les méthodes de cryptage les plus sécurisées sont MCRYPT_BLOWFISH et MCRYPT_RIJNDAEL_128, avec une taille de bloc de 8 octets et MCRYPT_MODE_CBC mode.

Stockage de clé privée

Pour améliorer la sécurité, envisagez d'utiliser plusieurs clés : une pour l'utilisateur, une pour l'application et une pour le sel spécifique à l'utilisateur. . Stockez la clé spécifique à l'application en toute sécurité, séparément de la racine Web. Stockez la clé spécifique à l'utilisateur dans la base de données avec le mot de passe crypté. Exiger des utilisateurs qu'ils saisissent la clé privée lorsqu'ils ont besoin de déchiffrer des mots de passe.

Prévenir la compromission des mots de passe

Pour atténuer le vol de mots de passe, mettez en œuvre des mesures de sécurité strictes pour vous protéger contre les compromissions du système, Attaques MITM et détection du trafic HTTP. Utilisez SSL pour tout le trafic et éliminez toutes les vulnérabilités sur le serveur.

Considérations supplémentaires sur le cryptage

  • Taille des données cryptées : Les données cryptées la taille peut varier en fonction de la longueur du texte brut, avec une plage de frais généraux d'environ 80 à 87 caractères.
  • Durée de décryptage : Le décryptage à l'aide de la classe d'exemple prend environ 0,5 seconde en moyenne.
  • Méthode alternative d'étirement de clé : Vous pouvez utiliser un fonction distincte pour étirer la clé au lieu de l'exécuter dans la dérivation PBKDF2.

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