Maison > développement back-end > tutoriel php > Comment implémenter le cryptage et le décryptage des données dans un projet PHP ?

Comment implémenter le cryptage et le décryptage des données dans un projet PHP ?

PHPz
Libérer: 2023-11-02 12:18:02
original
1298 Les gens l'ont consulté

Comment implémenter le cryptage et le décryptage des données dans un projet PHP ?

Comment implémenter le cryptage et le décryptage des données dans un projet PHP ?

Avec le développement d'Internet, la sécurité des données est devenue un enjeu très important. Dans les projets PHP, nous devons souvent gérer certaines données sensibles, telles que les mots de passe des utilisateurs, les informations sur les utilisateurs, etc. Afin de protéger ces données contre toute acquisition malveillante, nous devons les chiffrer et les déchiffrer. Cet article présentera comment implémenter le cryptage et le déchiffrement des données dans les projets PHP.

1. Algorithme de cryptage symétrique
L'algorithme de cryptage symétrique est un algorithme qui utilise la même clé pour le cryptage et le déchiffrement. Les algorithmes de chiffrement symétriques courants incluent DES, AES, etc. En PHP, les opérations de chiffrement et de déchiffrement symétriques peuvent être implémentées en utilisant la bibliothèque openssl. Voici un exemple de cryptage et de décryptage de données à l'aide de l'algorithme de cryptage symétrique AES :

// Fonction de cryptage
fonction encrypt($data, $key) {

$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $encrypted);
Copier après la connexion

}

// Fonction de décryptage
function decrypt($data, $key) {

$data = base64_decode($data);
$iv = substr($data, 0, openssl_cipher_iv_length('aes-256-cbc'));
$data = substr($data, openssl_cipher_iv_length('aes-256-cbc'));
return openssl_decrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
Copier après la connexion

}

// Test de cryptage et de décryptage
$data = 'Bonjour tout le monde !';
$key = 'testkey';
$encrypted = encrypt($data, $ key);
$decrypted = decrypt($encrypted, $key);

echo "Avant le cryptage : $data
";
echo "Après le cryptage : $encrypted
";
echo "Après le décryptage : $decrypted
" ;

?>

Dans l'exemple ci-dessus, nous avons défini une fonction de cryptage et une fonction de décryptage pour crypter et déchiffrer les données. Parmi eux, la fonction de cryptage utilise la fonction openssl_encrypt pour les opérations de cryptage, et la fonction decrypt utilise la fonction openssl_decrypt pour les opérations de décryptage. En appelant ces deux fonctions, vous pouvez facilement crypter et déchiffrer des données.

2. Algorithme de cryptage asymétrique
L'algorithme de cryptage asymétrique est un algorithme qui utilise une paire de clés pour le cryptage et le déchiffrement, comprenant une clé publique et une clé privée. Les algorithmes de chiffrement asymétriques courants incluent RSA, DSA, etc. En PHP, les opérations de chiffrement et de déchiffrement asymétriques peuvent être implémentées à l'aide de la bibliothèque openssl. Voici un exemple d'utilisation de l'algorithme de chiffrement asymétrique RSA pour chiffrer et déchiffrer des données :

// Générer une paire de clés
$keyPair = openssl_pkey_new(array(

'private_key_bits' => 2048,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
Copier après la connexion

));

// Obtenir Clé privée et clé publique
openssl_pkey_export($keyPair, $privateKey);
$publicKey = openssl_pkey_get_details($keyPair)['key'];

// Fonction de cryptage
function encrypt($data, $publicKey) {

openssl_public_encrypt($data, $encrypted, $publicKey);
return base64_encode($encrypted);
Copier après la connexion

}

// Fonction de décryptage
function decrypt($data, $privateKey) {

openssl_private_decrypt(base64_decode($data), $decrypted, $privateKey);
return $decrypted;
Copier après la connexion

}

// Tester le cryptage et le décryptage
$data = 'Bonjour le monde !';
$encrypted = encrypt($data, $ publicKey);
$decrypted = decrypt($encrypted, $privateKey);

echo "Avant le cryptage : $data
";
echo "Après le cryptage : $encrypted
";
echo "Après le décryptage : $decrypted
" ;

?>

Dans l'exemple ci-dessus, nous avons d'abord généré une paire de clés à l'aide de la fonction openssl_pkey_new, puis utilisé la fonction openssl_pkey_export pour obtenir la clé privée et utilisé la fonction openssl_pkey_get_details pour obtenir la clé publique. Ensuite, nous définissons une fonction de chiffrement et une fonction de décryptage pour chiffrer et déchiffrer les données. Parmi elles, la fonction encrypt utilise la fonction openssl_public_encrypt pour les opérations de chiffrement, et la fonction decrypt utilise la fonction openssl_private_decrypt pour les opérations de décryptage. De même, en appelant ces deux fonctions, vous pouvez facilement chiffrer et déchiffrer des données.

Résumé
Cet article présente comment implémenter le cryptage et le décryptage des données dans les projets PHP. Tout d’abord, nous avons appris à effectuer des opérations de chiffrement et de déchiffrement à l’aide d’algorithmes de chiffrement symétriques, puis nous avons appris à effectuer des opérations de chiffrement et de déchiffrement à l’aide d’algorithmes de chiffrement asymétriques. En restant au courant de ces éléments, nous pouvons protéger les données sensibles et améliorer la sécurité de nos projets.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal