Maison >développement back-end >tutoriel php >Comment puis-je récupérer en toute sécurité des mots de passe cryptés en PHP ?

Comment puis-je récupérer en toute sécurité des mots de passe cryptés en PHP ?

DDD
DDDoriginal
2024-12-27 12:52:13942parcourir

How Can I Securely Retrieve Encrypted Passwords in PHP?

Récupération sécurisée des mots de passe : au-delà du cryptage et du hachage

Bien qu'il soit crucial d'assurer la sécurité des données, le stockage d'informations sensibles telles que les mots de passe pose des défis uniques. Les chiffrer pour une récupération ultérieure peut sembler contre-intuitif, car l’essence du chiffrement réside dans le fait de rendre les données inaccessibles. Cependant, une stratégie de cryptage et de déchiffrement bien définie peut surmonter cet obstacle.

En PHP, vous ne pouvez pas simplement utiliser une fonction de hachage comme bcrypt pour les mots de passe car il s'agit d'une conversion à sens unique, rendant la récupération impossible. Pour résoudre ce problème, pensez à utiliser une combinaison de méthodes de cryptage et de brouillage qui vous permettent de récupérer le mot de passe d'origine tout en préservant sa sécurité.

Une solution de cryptage complète

Pour sécuriser crypter et déchiffrer les mots de passe, considérez le PHP suivant code :

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted ';
// Encryption
$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);
// Decryption
$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    ""
);

Considérations essentielles

Il est important de noter que le code fourni crypte les informations mais n'authentifie pas le texte chiffré pour éviter toute falsification . Pour une sécurité renforcée, il est recommandé de ne pas s'appuyer uniquement sur un cryptage non authentifié.

Ressources supplémentaires

Explorez les ressources suivantes pour en savoir plus idées :

  • https://stackoverflow.com/a/30189841/2224584
  • https://stackoverflow.c om/a/30166085/2224584
  • https://stackoverflow.com/a/30159120/2224584

Attention : Sécurité de la clé de cryptage

N'utilisez jamais de « mot de passe » comme clé de cryptage ; les clés de cryptage doivent être des chaînes aléatoires.

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