Maison  >  Article  >  développement back-end  >  Utilisation de la bibliothèque de fonctions de chiffrement et de décryptage PHP

Utilisation de la bibliothèque de fonctions de chiffrement et de décryptage PHP

王林
王林original
2023-06-16 10:49:401685parcourir

Utilisation de la bibliothèque de fonctions de cryptage et de décryptage PHP

Alors que les problèmes de sécurité des réseaux deviennent de plus en plus importants, le cryptage est devenu un élément indispensable de la technologie réseau moderne. En PHP, la bibliothèque de fonctions de chiffrement et de déchiffrement fournit de nombreuses fonctions de chiffrement et de déchiffrement, qui peuvent être utilisées pour traiter des informations sensibles et assurer la sécurité des données. Cet article présentera l'utilisation de la bibliothèque de fonctions de chiffrement et de décryptage PHP.

1. Fonctions de cryptage et de décryptage couramment utilisées

  1. Cryptage md5 :

Le cryptage md5 est une méthode de cryptage irréversible qui est souvent utilisée pour stocker les mots de passe et vérifier l'intégrité des fichiers. L'utilisation est très simple, par exemple :

$message = 'password';
$encrypted = md5($message);
  1. chiffrement sha1 :

le cryptage sha1 est également une méthode de cryptage irréversible, et son utilisation est similaire au cryptage md5. Par exemple :

$message = 'password';
$encrypted = sha1($message);
  1. cryptage base64 :

le cryptage base64 est une méthode de cryptage réversible adaptée au codage de données binaires au format de caractères ASCII. Par exemple :

$message = 'password';
$encrypted = base64_encode($message);

le décryptage base64 peut utiliser la fonction base64_decode. Par exemple :

$encrypted = 'cGFzc3dvcmQ=';
$message = base64_decode($encrypted); 
  1. Cryptage AES :

Le cryptage AES fournit une méthode de cryptage réversible qui peut être utilisée pour protéger la transmission et le stockage des données. L'utilisation est la suivante :

$message = 'password';
$key = 'mysecretkey';
$encrypted = openssl_encrypt($message, 'AES-256-CBC', $key);

Où, 'AES-256-CBC' est l'algorithme de cryptage et $key est la clé. Le décryptage AES peut utiliser la fonction openssl_decrypt. Par exemple :

$encrypted = 'G0TzOGxUWSJ2XOGVTYaZDFtB26oTVPqsIiL0FmzNVcA=';
$key = 'mysecretkey';
$message = openssl_decrypt($encrypted, 'AES-256-CBC', $key);
  1. Chiffrement RSA :

Le cryptage RSA fournit un moyen de cryptage par clé publique et de déchiffrement par clé privée, adapté aux scénarios de cryptage de données courants. L'utilisation est la suivante :

Générez d'abord la clé publique et la clé privée :

$privKey = openssl_pkey_new(array(
    'private_key_bits' => 1024,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
));

openssl_pkey_export($privKey, $pkey);

$pubKey = openssl_pkey_get_details($privKey);
$pubKey = $pubKey['key'];

Utilisez ensuite la clé publique pour chiffrer :

$message = 'password';
$encrypted = '';
$success = openssl_public_encrypt($message, $encrypted, $pubKey);

Le décryptage RSA peut utiliser la fonction openssl_private_decrypt. Par exemple :

$encrypted = '';
$message = '';
$success = openssl_private_decrypt($encrypted, $message, $privKey);

2. Utilisation du module de cryptage et de décryptage

Dans les applications réelles, nous devrons peut-être utiliser un module de cryptage et de décryptage complet pour gérer la sécurité des données. En PHP, il existe d'excellents modules de cryptage et de décryptage, tels que mcrypt et sodium. Ce qui suit décrit comment utiliser ces deux modules.

  1. module mcrypt : 

le module mcrypt est un module de cryptage et de décryptage largement utilisé en PHP, fournissant une variété d'algorithmes de cryptage symétriques et d'algorithmes de cryptage asymétriques. L'utilisation est la suivante :

Définissez d'abord la clé et le vecteur d'initialisation :

$key = 'mysecretkey';
$iv = mcrypt_create_iv(
mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC),
MCRYPT_RAND);

Utilisez ensuite la fonction mcrypt_encrypt pour chiffrer :

$message = 'password';
$encrypted = mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$key,
$message,
MCRYPT_MODE_CBC,
$iv
);

mcrypt Le décryptage peut utiliser la fonction mcrypt_decrypt. Par exemple :

$decrypted = mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
$key,
$encrypted,
MCRYPT_MODE_CBC,
$iv
);

$decrypted = rtrim($decrypted, "");
echo $decrypted;
  1. module sodium :

module sodium est un module de cryptage et de décryptage introduit dans PHP7 et versions ultérieures. Il fournit de nombreuses fonctionnalités de cryptage avancées, telles que des fonctions de hachage de mot de passe et des algorithmes de signature numérique. L'utilisation est la suivante :

Générez d'abord la clé :

$key = sodium_crypto_secretbox_keygen();

Utilisez ensuite la fonction sodium_crypto_secretbox pour chiffrer :

$message = 'password';
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$encrypted = sodium_crypto_secretbox($message, $nonce, $key);

le décryptage du sodium peut utiliser la fonction sodium_crypto_secretbox_open. Par exemple :

$decrypted = sodium_crypto_secretbox_open($encrypted, $nonce, $key);

if ($decrypted === false) {
    throw new Exception('Failed to decrypt message');
}

echo $decrypted;

3. Résumé

Aujourd'hui, alors que la sécurité des réseaux est de plus en plus importante, le cryptage est devenu une technologie essentielle pour protéger la confidentialité des données. PHP fournit une multitude de bibliothèques et de modules de fonctions de cryptage et de décryptage. Les développeurs peuvent choisir la méthode de cryptage la plus appropriée en fonction des différents besoins pour garantir la sécurité des données. Grâce à l'introduction de cet article, je pense que les lecteurs maîtrisent l'utilisation de base de la bibliothèque de fonctions de chiffrement et de décryptage PHP et l'utilisation des modules de chiffrement et de décryptage couramment utilisés.

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