Gérer les mots de passe en toute sécurité : cryptage et déchiffrement
Lors du stockage de données sensibles telles que les mots de passe, il est crucial d'employer des mesures de sécurité appropriées. Bien que les fonctions de hachage soient utilisées pour sécuriser les mots de passe de manière irréversible, il peut y avoir des cas où un cryptage réversible est souhaité.
Malgré les idées fausses entourant la base64 comme méthode de cryptage valide, elle reste une technique d'encodage simple. Au lieu de cela, nous explorons une approche plus sécurisée pour crypter et déchiffrer les mots de passe, qui implique la création d'un brouillage unique pour modifier les données avant et après l'encodage base64.
Pour implémenter cette méthode, nous définissons une clé ("mot de passe pour (en/de)crypt") et une chaîne à chiffrer (" chaîne à chiffrer ").
Chiffrement Processus
$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 ) );
Ce code lance le processus de cryptage en créant un vecteur d'initialisation (IV) et en utilisant un algorithme de hachage fort (SHA-256) pour générer la clé de cryptage à partir de la clé fournie. Les données sont ensuite cryptées à l'aide d'un algorithme de cryptage hautement sécurisé (RIJNDAEL-128) en mode CBC. Le résultat chiffré est ensuite codé en base64 pour produire une chaîne obscurcie.
Processus de décryptage
$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 ), "" );
Le processus de décryptage inverse la séquence de chiffrement. La chaîne codée en base64 est décodée et le IV est récupéré. La clé de cryptage est recalculée et les données sont déchiffrées à l'aide du IV et de la clé d'origine. Enfin, tous les octets nuls de fin sont supprimés, ce qui donne la chaîne de texte en clair d'origine.
Attention : Il est important de noter que le code fourni, bien qu'efficace pour illustrer le processus de cryptage/déchiffrement, est non destiné à une utilisation en production sous sa forme actuelle. Il manque de mécanismes d’authentification appropriés et d’autres mesures de sécurité essentielles à la protection des données sensibles. Lorsque vous traitez le cryptage de mots de passe, utilisez toujours des techniques de cryptage authentifiées et référez-vous aux meilleures pratiques établies du secteur pour obtenir des conseils.
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!