(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mcrypt_module_open — Ouvre le module de l'algorithme et du mode à utiliser
Cette fonction est OBSOLÈTE à partir de PHP 7.1.0 et a été SUPPRIMÉE à partir de PHP 7.2.0. Dépendre de cette fonction est fortement déconseillé.
$algorithm
,$algorithm_directory
,$mode
,$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 bibliothèque est refermée en appelant mcrypt_module_close().
algorithm
Une constante parmi les constantes MCRYPT_ciphername
, ou le nom de l'algorithme, sous la forme d'une chaîne de caractères.
algorithm_directory
Le paramètre algorithm_directory
est utilisé pour localiser le module de cryptage. Lorsque vous spécifiez un nom de dossier, il sera utilisé. Si vous spécifiez une chaîne vide (""
), la valeur définie dans la directive mcrypt.algorithms_dir
du fichier php.ini sera utilisée. Lorsqu'elle n'est pas définie, le dossier par défaut utilisé sera celui dans lequel se trouve la bibliothèque libmcrypt (habituellement, /usr/local/lib/libmcrypt).
mode
Une constantes parmi les constantes MCRYPT_MODE_modename
, ou une des chaînes suivantes : "ecb", "cbc", "cfb", "ofb", "nofb" ou "stream".
mode_directory
Le paramètre mode_directory
est utilisé pour localiser le module de cryptage. Si un nom de dossier est spécifié, il sera utilisé. Lorsque vous spécifiez une chaîne vide (""
), la valeur de la directive mcrypt.modes_dir
du fichier php.ini sera utilisée. Si elle n'est pas définie, le dossier par défaut utilisé sera celui dans lequel se trouve la bibliothèque libmcrypt (habituellement /usr/local/lib/libmcrypt).
Normalement, cette fonction retourne un descripteur de cryptage, ou false
si une erreur survient.
Exemple #1 Exemple avec mcrypt_module_open()
<?php
$td = mcrypt_module_open(MCRYPT_DES, '',
MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
?>
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 ECB
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.
Exemple #2 Utilisation de mcrypt_module_open() pour chiffrer
<?php
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
$ks = mcrypt_enc_get_key_size($td);
$key = substr(md5('very secret key'), 0, $ks);
mcrypt_generic_init($td, $key, $iv);
$encrypted = mcrypt_generic($td, 'This is very important data');
mcrypt_generic_deinit($td);
mcrypt_generic_init($td, $key, $iv);
$decrypted = mdecrypt_generic($td, $encrypted);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
echo trim($decrypted)."\n";
?>