mcrypt_module_open

(PHP 4 >= 4.0.2)

mcrypt_module_open --  Ouvre le module de l'algorithme et le mode à utiliser

Description

resource mcrypt_module_open ( string algorithm, string algorithm_directory, string mode, string mode_directory)

mcrypt_module_open() ouvre le module de l'algorithme et du mode à utiliser. Le nom de l'algorithme est spécifié par le paramètre algorithm (par exemple : "twofish"), ou bien une des constantes MCRYPT_ciphername. La librairie est refermée en appelant mcrypt_module_close, mais il n'est pas nécessaire d'appeler cette fonction si mcrypt_generic_end() est utilisé. Normalement, mcrypt_module_open() retourne un pointeur d'encryption, ou bien FALSE en cas d'erreur.

algorithm_directory et mode_directory servent à repérer les modules d'encryption. Si vous fournissez un nom de dossier, il sera utilisé. Si vous passez une chaîne vide (""), la valeur utilisé par mcrypt.algorithms_dir ou mcrypt.modes_dir sera celle indiquée dans les directives de configuration. Lorsque ces paramètres ne sont pas fournis les valeurs par défaut, compilées avec la librairie sont utilisées. (généralement /usr/local/lib/libmcrypt).

Exemple 1. Exemple avec mcrypt_module_open()

<?php
  $td
= mcrypt_module_open (MCRYPT_DES, "", MCRYPT_MODE_ECB, "/usr/lib/mcrypt-modes");
?>
L'exemple ci-dessus va essayer d'ouvrir le module de chiffrement par DES, dans le dossier par défaut, et le mode EBC dans le dossier /usr/lib/mcrypt-modes.

Exemple 2. Using mcrypt_module_open() in encryption

<?php
    
/* Charge un chiffrement */
    
$td = mcrypt_module_open ('rijndael-256', '', 'ofb', '');

    
/* Cr&eacute;e le VI et d&eacute;termine la taille de la cl&eacute; */
    
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    
$ks = mcrypt_enc_get_key_size ($td);

    
/* Cr&eacute;e la cl&eacute; */
    
$key = substr (md5 ('very secret key'), 0, $ks);

    
/* Intialise le chiffrement */
    
mcrypt_generic_init ($td, $key, $iv);

    
/* Chiffre les donn&eacute;es */
    
$encrypted = mcrypt_generic ($td, 'This is very important data');

    
/* Lib&egrave;re le gestionnaire de chiffrement */
    
mcrypt_generic_deinit ($td);

    
/* Initialise le module de chiffrement pour le d&eacute;chiffrement */
    
mcrypt_generic_init ($td, $key, $iv);

    
/* D&eacute;chiffre les donn&eacute;es */
    
$decrypted = mdecrypt_generic ($td, $encrypted);

    
/* Lib&egrave;re le gestionnaire de d&eacute;chiffrement, et ferme le module */
    
mcrypt_generic_deinit ($td);
    
mcrypt_module_close ($td);

    
/* Affiche la cha&icirc;ne */
    
echo trim ($decrypted)."\n";
?>

La première ligne de l'exemple ci-dessus va essayer d'ouvrir le chiffrement DES, dans le dossier par défaut, et le mode EBC dans le dossier /usr/lib/mcrypt-modes. Le second exemple utilise les chaînes comme nom pour le chiffrement et le mode. Cela ne fonctionne que si l'extension est compilée avec libmcrypt 2.4.x or 2.5.x.

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