En PHP, le chiffrement et le déchiffrement des données sont des tâches courantes pour assurer la sécurité des informations. PHP offre plusieurs bibliothèques pour effectuer ces opérations, telles que OpenSSL et Sodium. Voici un aperçu détaillé de la manière d’utiliser ces bibliothèques pour chiffrer et déchiffrer des données, accompagné d’exemples de code.
OpenSSL est l’une des bibliothèques les plus couramment utilisées pour le chiffrement et le déchiffrement en PHP. Voici comment procéder.
```
// Données à chiffrer
$plaintext = “Voici les données sensibles”;
// Générer une clé de chiffrement et un IV (Initialisation Vector)
$key = openssl_random_pseudo_bytes(32); // Clé pour AES-256
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length(‘aes-256-cbc’));
// Chiffrer les données
$ciphertext = openssl_encrypt(
$plaintext,
‘aes-256-cbc’,
$key,
OPENSSL_RAW_DATA,
$iv
);
// Encoder en base64 pour stockage et transmission
$ciphertext_base64 = base64_encode($ciphertext);
// Afficher le résultat
echo “Texte chiffré: “ . $ciphertext_base64 . “\n”;
?>
```
```
// Exemple de texte chiffré (base64) et les mêmes clé et IV utilisés pour le chiffrement
$ciphertext_base64 = “Le_Texte_Chiffré”;
$key = “La_même_clé_que_pour_le_chiffrement”;
$iv = “Le_même_IV_que_pour_le_chiffrement”;
// Décoder le base64 pour récupérer le texte chiffré original
$ciphertext = base64_decode($ciphertext_base64);
// Déchiffrer les données
$decrypted_text = openssl_decrypt(
$ciphertext,
‘aes-256-cbc’,
$key,
OPENSSL_RAW_DATA,
$iv
);
// Afficher le résultat
echo “Texte déchiffré: “ . $decrypted_text . “\n”;
?>
```
Sodium est une autre bibliothèque, moderne et sécurisée, incluse à partir de PHP 7.2. Voici comment l’utiliser.
```
// Données à chiffrer
$plaintext = “Voici les données sensibles”;
// Générer une clé de chiffrement
$key = sodium_crypto_secretbox_keygen();
// Générer un nonce unique
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
// Chiffrer les données
$ciphertext = sodium_crypto_secretbox($plaintext, $nonce, $key);
// Encoder en base64 pour stockage et transmission
$ciphertext_base64 = base64_encode($nonce . $ciphertext);
// Afficher le résultat
echo “Texte chiffré: “ . $ciphertext_base64 . “\n”;
?>
```
```
// Exemple de texte chiffré (base64)
$ciphertext_base64 = “Le_Texte_Chiffré”;
// Clé utilisée pour le chiffrement
$key = “La_même_clé_que_pour_le_chiffrement”;
// Décoder le base64
$cipherdata = base64_decode($ciphertext_base64);
// Récupérer le nonce et le texte chiffré
$nonce = substr($cipherdata, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$ciphertext = substr($cipherdata, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
// Déchiffrer les données
$decrypted_text = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
if ($decrypted_text === false) {
throw new Exception(“Échec du déchiffrement”);
}
// Afficher le résultat
echo “Texte déchiffré: “ . $decrypted_text . “\n”;
?>
```
Ces exemples montrent comment utiliser deux des principales méthodes de chiffrement/déchiffrement en PHP. Ces pratiques peuvent être étendues et sécurisées davantage selon les besoins spécifiques de chaque application.
1. [PHP: openssl\_encrypt – Manual](https://www.php.net/manual/en/function.openssl-encrypt.php)
2. [PHP: sodium_crypto_secretbox – Manual](https://www.php.net/manual/en/function.sodium-crypto-secretbox.php)
3. [The Sodium library in PHP](https://paragonie.com/book/pecl-libsodium)
4. [PHP 7.2 Release Notes](https://www.php.net/releases/7_2_0.php)
En utilisant ces bibliothèques et les bonnes pratiques de gestion des clés et des IV, vous pouvez efficacement sécuriser vos données en PHP.