chiffrement mcrypt mcrypt
&reftitle.intro; Ces fonctions permettent d'accéder à la bibliothèque mcrypt, qui dispose d'une grande variété d'algorithmes de chiffrement, tels DES, TripleDES, Blowfish (par défaut), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 et GOST en modes CBC, OFB, CFB et ECB. De plus, elles acceptent aussi RC6 et IDEA qui sont considérés comme "non-libres".
&reftitle.required; Ces fonctions utilisent mcrypt. Pour utiliser cette bibliothèque, téléchargez le fichier libmcrypt-x.x.tar.gz sur &url.mcrypt; et suivez les instructions d'installation fournies. Les utilisateurs Windows trouveront toutes les bibliothèques nécessaires sur &url.mcrypt.windows;. Depuis &php; 5.0.0, vous avez besoin de la version 2.5.6 ou suivant de la bibliothèque libmcrypt. Si vous compilez &php; avec la bibliothèque libmcrypt 2.4.x, les algorithmes suivants sont supportés : CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT ainsi que les chiffrements suivants : ENIGMA (chiffrement), PANAMA, RC4 et WAKE. Avec libmcrypt 2.4.x un autre mode de chiffrement est disponible : nOFB.
&reference.mcrypt.configure; &reference.mcrypt.ini;
&reftitle.resources; &no.resource;
&reference.mcrypt.constants;
Mcrypt ciphers Voici une liste non exhaustive des modes de chiffrement de l'extension mcrypt. Pour disposer d'une liste complète des chiffrements supportés, voyez les définitions dans le fichier mcrypt.h. La règle générale avec l'API mcrypt-2.2.x API est que vous pouvez accéder au mode de chiffrement depuis &php; avec la constante MCRYPT_ciphername. Avec la bibliothèque libmcrypt-2.4.x et libmcrypt-2.5.x, ces constantes fonctionnent toujours, mais il est possible de spécifier le nom du chiffrement dans une chaîne, lors de l'appel à mcrypt_module_open. MCRYPT_3DES MCRYPT_ARCFOUR_IV (libmcrypt > 2.4.x seulement) MCRYPT_ARCFOUR (libmcrypt > 2.4.x seulement) MCRYPT_BLOWFISH MCRYPT_CAST_128 MCRYPT_CAST_256 MCRYPT_CRYPT MCRYPT_DES MCRYPT_DES_COMPAT (libmcrypt 2.2.x seulement) MCRYPT_ENIGMA (libmcrypt > 2.4.x seulement, alias de MCRYPT_CRYPT) MCRYPT_GOST MCRYPT_IDEA (non-free) MCRYPT_LOKI97 (libmcrypt > 2.4.x seulement) MCRYPT_MARS (libmcrypt > 2.4.x seulement, non-libre) MCRYPT_PANAMA (libmcrypt > 2.4.x seulement) MCRYPT_RIJNDAEL_128 (libmcrypt > 2.4.x seulement) MCRYPT_RIJNDAEL_192 (libmcrypt > 2.4.x seulement) MCRYPT_RIJNDAEL_256 (libmcrypt > 2.4.x seulement) MCRYPT_RC2 MCRYPT_RC4 (libmcrypt 2.2.x seulement) MCRYPT_RC6 (libmcrypt > 2.4.x seulement) MCRYPT_RC6_128 (libmcrypt 2.2.x seulement) MCRYPT_RC6_192 (libmcrypt 2.2.x seulement) MCRYPT_RC6_256 (libmcrypt 2.2.x seulement) MCRYPT_SAFER64 MCRYPT_SAFER128 MCRYPT_SAFERPLUS (libmcrypt > 2.4.x seulement) MCRYPT_SERPENT(libmcrypt > 2.4.x seulement) MCRYPT_SERPENT_128 (libmcrypt 2.2.x seulement) MCRYPT_SERPENT_192 (libmcrypt 2.2.x seulement) MCRYPT_SERPENT_256 (libmcrypt 2.2.x seulement) MCRYPT_SKIPJACK (libmcrypt > 2.4.x seulement) MCRYPT_TEAN (libmcrypt 2.2.x seulement) MCRYPT_THREEWAY MCRYPT_TRIPLEDES (libmcrypt > 2.4.x seulement) MCRYPT_TWOFISH (pour les vieilles versions mcrypt 2.x, ou mcrypt > 2.4.x ) MCRYPT_TWOFISH128 (les TWOFISHxxx sont disponibles dans les nouvelles versions 2.x, mais pas dans les versions 2.4.x) MCRYPT_TWOFISH192 MCRYPT_TWOFISH256 MCRYPT_WAKE (libmcrypt > 2.4.x seulement) MCRYPT_XTEA (libmcrypt > 2.4.x seulement) Vous devez (mode OFB et OFB) ou pouvez (mode CBC) fournir un vecteur d'initialisation (IV) pour ces modes de chiffrement. IV doit être unique, et avoir la même valeur au chiffrement et au déchiffrement. Pour des données qui seront enregistrées après chiffrement, vous pouvez prendre le résultat d'une fonction telle que MD5, appliquée sur le nom du fichier. Sinon, vous pouvez envoyer IV avec les données chiffrées, (reportez-vous au chapitre 9.3 de &book.applied.cryptography; de Schneier (ISBN 0-471-11709-9) pour plus de détails sur le sujet).
&reftitle.examples; Mcrypt permet de chiffrer et de déchiffrer en utilisant les méthodes mentionnées ci-dessus. Les 4 commandes importantes mcrypt_cfb, mcrypt_cbc, mcrypt_ecb et mcrypt_ofb) peuvent toutes opérer en mode MCRYPT_ENCRYPT et MCRYPT_DECRYPT. Chiffre une valeur avec un TripleDES, en mode ECB. ]]> Cet exemple va retourner les données cryptées dans la variable $encrypted_data. Si vous avez compilé &php; avec libmcrypt 2.4.x, ces fonctions sont toujours disponibles, mais il est vivement conseillé d'utiliser les nouvelles fonctions avancées. Cryptage d'une valeur avec TripleDES sous 2.4.x en mode ECB ]]> Cet exemple va retourner les données cryptées dans la variable $encrypted_data. Pour un exemple complet, voyez mcrypt_module_open.
&reference.mcrypt.functions;