(PHP 4 >= 4.0.2, PHP 5)
mdecrypt_generic — Déchiffre les données
$td
, string $data
)
Déchiffre les données data
. Notez que la longueur de
la chaîne déchiffrée peut être plus longue que la chaîne originale, car elle
peut avoir été complétée par des caractères.
td
Un descripteur de chiffrement, retourné par la fonction mcrypt_module_open()
data
Les données chiffrées.
Exemple #1 Exemple avec mdecrypt_generic()
<?php
/* Données */
$key = 'Ceci est une très longue clé de chiffrement, et même trop longue';
$plain_text = 'Ceci sont des données importantes';
/* Ouvre le module et crée un VI */
$td = mcrypt_module_open('des', '', 'ecb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
/* Initialise le module de chiffrement */
if (mcrypt_generic_init($td, $key, $iv) != -1) {
/* Chiffre les données */
$c_t = mcrypt_generic($td, $plain_text);
mcrypt_generic_deinit($td);
/* Réinitialise les tampons pour le déchiffrement */
mcrypt_generic_init($td, $key, $iv);
$p_t = mdecrypt_generic($td, $c_t);
/* Nettoye */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
if (strncmp($p_t, $plain_text, strlen($plain_text)) == 0) {
echo "ok\n";
} else {
echo "erreur\n";
}
?>
L'exemple ci-dessus montre comment vérifier que les données avant chiffrement sont bien les mêmes que celles après chiffrement/déchiffrement. Il est très important de réinitialiser le buffer de chiffrement avec mcrypt_generic_init() avant que nous ne déchiffriez les données.
Le gestionnaire de déchiffrement doit toujours être initialisé par la fonction mcrypt_generic_init() avec une clé et un VI avant d'appeler cette fonction. Lorsque le chiffrement est fait, il faut que vous libériez les données chiffrées en appelant mcrypt_generic_deinit(). Voir mcrypt_module_open() pour un exemple.