# mcrypt_module_open

(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

Avertissement

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é.

### Description

mcrypt_module_open(
string `$algorithm`,
string `$algorithm_directory`,
string `$mode`,
string `$mode_directory`
): resource

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().

### Liste de paramètres

`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).

### Valeurs de retour

Normalement, cette fonction retourne un descripteur de cryptage, ou `false` si une erreur survient.

### Exemples

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
/* Charge un chiffrement */
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
/* Crée le VI et détermine la taille de la clé */
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
$ks = mcrypt_enc_get_key_size($td);
/* Crée la clé (exemple uniquement : MD5 n'est pas un bon algorithme de hachage pour cela) */
$key = substr(hash('md5', 'very secret key'), 0, $ks);
/* Intialise le chiffrement */
mcrypt_generic_init($td, $key, $iv);
/* Chiffre les données */
$encrypted = mcrypt_generic($td, 'This is very important data');
/* Libère le gestionnaire de chiffrement */
mcrypt_generic_deinit($td);
/* Initialise le module de chiffrement pour le déchiffrement */
mcrypt_generic_init($td, $key, $iv);
/* Déchiffre les données */
$decrypted = mdecrypt_generic($td, $encrypted);
/* Libère le gestionnaire de déchiffrement, et ferme le module */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
/* Affiche la chaîne */
echo trim($decrypted)."\n";
?>`

### Voir aussi

- mcrypt_module_close() - Décharge le module de chiffrement
- mcrypt_generic() - Chiffre les données
- mdecrypt_generic() - Déchiffre les données
- mcrypt_generic_init() - Initialise tous les buffers nécessaires
- mcrypt_generic_deinit() - Prépare le module pour le déchargement