Maison >développement back-end >tutoriel php >Comment puis-je crypter et décrypter en toute sécurité les mots de passe en 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
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!