(PHP 4 >= 4.0.2, PHP 5)
mcrypt_module_open — Ouvre le module de l'algorithme et du mode à utiliser
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 1451. 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'
,
''
);
?>
Exemple 1452. 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() .