Manuel PHP
Précédent |  | Suivant

# mcrypt_module_open

(PHP 4 >= 4.0.2, PHP 5)

mcrypt_module_open -- Ouvre le module de l'algorithme et du 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 bibliothèque 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 de cryptage, ou bien `FALSE` en cas d'erreur.

`algorithm_directory` et `mode_directory` servent à repérer les modules de cryptage. 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 bibliothèque, 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'); $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); ?>`

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. Utilisation de mcrypt_module_open() pour encrypter

`<?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é */
$key = substr(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";
?>`

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

Précédent | Sommaire | Suivant
mcrypt_module_is_block_mode | Niveau supérieur | mcrypt_module_self_test