mdecrypt_generic

(PHP 4 >= 4.0.2)

mdecrypt_generic -- Déchiffre

Description

string mdecrypt_generic ( resource td, string data)

mdecrypt_generic() 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 "\0".

Exemple 1. Exemple avec mdecrypt_generic()

<?php
    
/* Donn&eacute;es */
    
$key = 'Ceci est une tr&egrave;s longue cl&eacute; de chiffrement, voire m&ecirc;me trop longue';
    
$plain_text = 'Ceci sont des donn&eacute;es importantes';
   
    
/* Ouvre le module et cr&eacute;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&eacute;es */
        
$c_t = mcrypt_generic ($td, $plain_text);
        
mcrypt_generic_deinit ($td);

        
/* R&eacute;initialise les buffers pour le d&eacute;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 chiffrage sont bien les mêmes que celles après chiffrage/déchiffrage. 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ée et un VI avant d'appeler cette fonction. Lorsque le chiffrement est fait, il faut que vous libérirez les données chiffrées en appelant mcrypt_generic_deinit(). Voir mcrypt_module_open() pour un exemple.

Voir aussi mcrypt_generic(), mcrypt_generic_init() et mcrypt_generic_deinit().