Dino Geek essaye de t'aider

Comment chiffrer et déchiffrer des données en PHP ?


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.

  1. Utilisation de OpenSSL

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.

  1. Chiffrement avec OpenSSL

```
// 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”;
?>
```

  1. Déchiffrement avec OpenSSL

```
// 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”;
?>
```

  1. Utilisation de Sodium

Sodium est une autre bibliothèque, moderne et sécurisée, incluse à partir de PHP 7.2. Voici comment l’utiliser.

  1. Chiffrement avec Sodium

```
// 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”;
?>
```

  1. Déchiffrement avec Sodium

```
// 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. Sources

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.


Générez simplement des articles pour optimiser votre SEO
Générez simplement des articles pour optimiser votre SEO





DinoGeek propose des articles simples sur des technologies complexes

Vous souhaitez être cité dans cet article ? Rien de plus simple, contactez-nous à dino@eiki.fr

CSS | NodeJS | DNS | DMARC | MAPI | NNTP | htaccess | PHP | HTTPS | Drupal | WEB3 | LLM | Wordpress | TLD | Nom de Domaine | IMAP | TCP | NFT | MariaDB | FTP | Zigbee | NMAP | SNMP | SEO | E-Mail | LXC | HTTP | MangoDB | SFTP | RAG | SSH | HTML | ChatGPT API | OSPF | JavaScript | Docker | OpenVZ | ChatGPT | VPS | ZIMBRA | SPF | UDP | Joomla | IPV6 | BGP | Django | Reactjs | DKIM | VMWare | RSYNC | Python | TFTP | Webdav | FAAS | Apache | IPV4 | LDAP | POP3 | SMTP

| Whispers of love (API) | Déclaration d'Amour |






Mentions Légales / Conditions Générales d'Utilisation