Maison  >  Article  >  développement back-end  >  Comment crypter et décrypter des données en utilisant PHP ?

Comment crypter et décrypter des données en utilisant PHP ?

WBOY
WBOYoriginal
2023-05-21 09:33:142478parcourir

Avec le développement rapide de la technologie réseau, la sécurité des données est devenue l'un des problèmes les plus importants dans le développement d'applications réseau. Le cryptage des données est un moyen de protéger les informations sensibles en convertissant les données en une chaîne de caractères apparemment dénuée de sens grâce à un algorithme de cryptage, rendant impossible la lecture des informations par des personnes non autorisées. PHP est un langage de script côté serveur largement utilisé qui fournit de riches fonctions de cryptage et de décryptage pour implémenter divers algorithmes de cryptage.

Cet article expliquera comment utiliser PHP pour le cryptage et le décryptage des données, et fournira des conseils utiles et les meilleures pratiques de cryptage PHP.

1. Fonctions de cryptage et de décryptage de base

PHP fournit une variété de fonctions de cryptage et de décryptage, notamment le cryptage symétrique, le cryptage asymétrique et le cryptage par hachage. Voici quelques fonctions de base de cryptage et de déchiffrement :

  1. md5

md5 est la fonction intégrée de PHP pour générer des valeurs de hachage de 128 bits, qui a l'avantage de ne pas être craquable à l'envers. Son utilisation est la suivante :

$data = 'hello world';
$hash = md5($data);

Le code ci-dessus hachera les $data et renverra une valeur de hachage de 128 bits.

  1. sha1

sha1 est la fonction intégrée de PHP qui génère des valeurs de hachage de 160 bits, qui a une sécurité supérieure à md5. Son utilisation est cohérente avec md5, comme suit :

$data = 'hello world';
$hash = sha1($data);
  1. mcrypt_encrypt et mcrypt_decrypt

mcrypt_encrypt et mcrypt_decrypt sont des fonctions de chiffrement symétriques intégrées à PHP, qui peuvent implémenter plusieurs algorithmes de chiffrement, tels que des, aes, rc4, etc. Un exemple d'utilisation de mcrypt_encrypt pour crypter des données est le suivant :

$data = 'hello world';
$key = 'my_key';
$iv = '12345678';
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);

Le code ci-dessus crypte $data à l'aide de l'algorithme rijndael-128 et utilise le mode cbc et le décalage $iv. La fonction mcrypt_decrypt correspond à la fonction mcrypt_encrypt et est utilisée pour décrypter les données :

$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
  1. openssl_public_encrypt et openssl_private_decrypt

openssl_public_encrypt et openssl_private_decrypt sont des fonctions de chiffrement asymétrique intégrées à PHP qui utilisent la clé publique pour chiffrer les données et la clé privée pour décrypter. données. Par exemple, l'exemple de code pour chiffrer les données est le suivant :

$data = 'hello world';
$public_key = file_get_contents('public.pem');
$res = openssl_get_publickey($public_key);
openssl_public_encrypt($data, $encrypted, $res);

Le code ci-dessus utilise la clé publique pour chiffrer les données $data et stocke le résultat du chiffrement dans la variable $encrypted. Un exemple de code pour déchiffrer les données à l'aide d'une clé privée est le suivant :

$private_key = file_get_contents('private.pem');
$res = openssl_get_privatekey($private_key);
openssl_private_decrypt($encrypted, $decrypted, $res);

Le code ci-dessus utilise la clé privée pour déchiffrer les données stockées dans la variable $encrypted et stocke le résultat déchiffré dans la variable $decrypted.

2. Techniques de cryptage et bonnes pratiques

En plus d'utiliser les fonctions de cryptage de base, il existe également certaines techniques de cryptage et bonnes pratiques qui peuvent améliorer la sécurité des données :

  1. Améliorer la complexité du mot de passe

Plus la complexité du mot de passe est élevée, plus il est plus difficile de déchiffrer le mot de passe. Par conséquent, lors de la mise en œuvre du cryptage des mots de passe, vous pouvez utiliser les stratégies suivantes pour améliorer la complexité des mots de passe :

  • Longueur du mot de passe : utilisez autant que possible un mot de passe long, et il est généralement recommandé d'utiliser au moins 12 caractères ; chiffres : utilisez des lettres majuscules et minuscules et des chiffres. Une combinaison de chiffres pour augmenter la difficulté de déchiffrer le mot de passe
  • Caractères spéciaux : l'ajout de certains caractères spéciaux, tels que @, #, $, %, ^, etc., peut également augmenter ; la complexité du mot de passe.
Utilisez la stratégie de salage
  1. Le salage signifie ajouter une chaîne générée aléatoirement au mot de passe pour le cryptage lors du cryptage du mot de passe. Cela peut éviter le recours à des attaques telles que les tables arc-en-ciel, qui peuvent augmenter la difficulté de déchiffrer les mots de passe. Voici quelques exemples de fonctions de salage :
function generate_salt($length) {
  $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  $salt = '';
  for ($i = 0; $i < $length; $i++) {
    $salt .= $chars[rand(0, strlen($chars) - 1)];
  }
  return $salt;
}

function hash_password($password, $salt) {
  return hash('sha256', $password . $salt);
}

Utilisez différents algorithmes de cryptage
  1. Étant donné que l'utilisation du même algorithme de cryptage pour le cryptage rend les données plus vulnérables, il est recommandé d'utiliser plusieurs algorithmes de cryptage différents pour améliorer la sécurité des données.

Changez régulièrement la clé de cryptage et la valeur salt
  1. Pour augmenter la difficulté des attaques de craquage, il est recommandé de changer régulièrement la clé de cryptage et la chaîne salée. Surtout en cas de fuite ou d'attaque de données, les clés de cryptage et les valeurs de sel doivent être modifiées immédiatement.

5. Conclusion

PHP fournit une multitude de fonctions de cryptage et de décryptage, qui peuvent utiliser différents algorithmes de cryptage pour protéger les données sensibles. Dans le développement d'applications réelles, des techniques telles que l'ajout de sel et l'augmentation de la complexité des mots de passe peuvent également être utilisées pour améliorer la sécurité des données. La maîtrise des fonctions de cryptage et de décryptage PHP et l'application appropriée des techniques de cryptage peuvent rendre les applications développées plus sûres et plus fiables.

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