Maison >développement back-end >tutoriel php >Comment crypter et décrypter des données en toute sécurité à l'aide de PHP ?

Comment crypter et décrypter des données en toute sécurité à l'aide de PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 19:14:10787parcourir

How to Securely Encrypt and Decrypt Data Using PHP?

Comment crypter et déchiffrer en toute sécurité des mots de passe en PHP

Le stockage d'informations utilisateur sensibles, telles que les informations d'identification de comptes étrangers, nécessite des précautions particulières pour garantir que les données sécurité. Bien que le chiffrement fournisse une couche de protection, il est crucial d'employer des méthodes robustes qui empêchent tout accès non autorisé aux données en texte brut.

Hachage ou chiffrement

Le hachage est l'approche privilégiée pour stockage de mot de passe. Contrairement au chiffrement, le hachage transforme de manière irréversible les mots de passe en un format unique et irréversible, rendant pratiquement impossible la récupération du mot de passe d'origine. Cela garantit que même si les attaquants accèdent aux mots de passe hachés, ils ne peuvent pas compromettre les comptes d'utilisateurs.

Fonctions de cryptage et de décryptage

Pour les situations où le cryptage est nécessaire, PHP fournit plusieurs fonctions pour crypter et déchiffrer le texte. Une méthode courante est le chiffre de Rijndael, également connu sous le nom d'AES-128 :

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted '; // note the spaces

Pour chiffrer :

$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
    )
);

Pour Décrypter :

$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
    ),
    ""
);

Avertissement

Les données cryptées sont vulnérables aux attaques Oracle de remplissage si elles ne sont pas authentifiées. Les mécanismes de chiffrement authentifiés doivent toujours être utilisés conjointement avec le chiffrement.

Bonnes pratiques

Pour garantir le plus haut niveau de sécurité, suivez ces bonnes pratiques :

  • Utilisez des clés de cryptage aléatoires.
  • Stockez les données cryptées séparément de texte en clair.
  • Limiter l'accès aux clés de chiffrement.
  • Alterner régulièrement les clés de chiffrement.
  • Envisager en utilisant des bibliothèques de chiffrement qui implémentent des algorithmes sécurisés et protègent contre les attaques connues.

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