Manuel PHP
Précédent   Suivant

XXVIII. Fonctions de cryptage

Ces fonctions utilisent mcrypt.

Ces fonctions permettent d'accéder à la librairie mcrypt library, qui dispose d'une grande variété d'algorithmes de cryptage, tels que 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, elle accepte aussi RC6 et IDEA qui sont considérés comme "non libre".

Pour l'utiliser, téléchargez la librairie libmcrypt-x.x.tar.gz grâce au lien ici et suivez les instructions d'installations incluses. Vous aurez aussi besoin de compiler PHP avec le paramètre -mcrypt pour activer cette extension.

mcrypt permet de crypter et de décrypter, 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, .
Example 1. Crypte une valeur avec un TripleDES, en mode ECB.
<?php
$key = "Cette cle est ultra secrete";
$input = "Rencontrons nous dans notre place secrete a 9 h 00."

$encrypted_data = mcrypt_ecb(MCRYPT_TripleDES, $key, $input, MCRYPT_ENCRYPT);
?>
     
Cet exemple va retourner les données cryptées dans la variable $encrypted_data.

mcrypt peut opérer en 4 modes de cryptage (CBC, OFB, CFB, and ECB). Nous allons présenter la technique d'utilisation de ces modes. Pour plus de références et de détails, reportez vous au livre suivant : Applied Cryptography by Schneier (ISBN 0-471-11709-9).

  • ECB (electronic codebook) est prévu pour des données aléatoires, telles que des clés. Etant donné que les données sont peu nombreuses et alétaoires, les inconvénients de l'ECB ont ici un effet négatif favorable.

  • CBC (cipher block chaining) est spécialement pratique avec les fichiers dont la sécurité ECB n'est pas suffisante.

  • CFB (cipher feedback) est la meilleure méthode pour crypter des flots d'octets, quand les octets doivent être encryptés un par un.

  • OFB (output feedback) est comparable à CFB, mais peut être utilisé lorsque des erreurs ne doivent pas être propagées.

PHP ne supporte par encore le cryptage des flots d'octets. Pour l'instant, PHP n'accepte que le cryptage de chaîne.

Pour obtenir la liste complète des modes de chiffrement, reportez vous aux derniers #define, dans le fichier En règle générale, vous pouvez accéder à une méthode de chiffrement avec l'option MCRYPT_nomDuChiffrement.

Voici une liste non exhaustive des modes de chiffrements de l'extension mcrypt. Si un chiffrement n'est pas dans cette liste, mais disponible dans la librairie, vous pouvez supposer que cette documentation est hors d'age.

    MCRYPT_BLOWFISH

  • MCRYPT_DES

  • MCRYPT_TripleDES

  • MCRYPT_ThreeWAY

  • MCRYPT_GOST

  • MCRYPT_CRYPT

  • MCRYPT_DES_COMPAT

  • MCRYPT_SAFER64

  • MCRYPT_SAFER128

  • MCRYPT_CAST128

  • MCRYPT_TEAN

  • MCRYPT_RC2

  • MCRYPT_TWOFISH (pour les version mcrypt 2.x )

  • MCRYPT_TWOFISH128 (TWOFISHxxx est disponible dans les nouvelles versions de mcrypt 2.x )

  • MCRYPT_TWOFISH192

  • MCRYPT_TWOFISH256

  • MCRYPT_RC6

  • MCRYPT_IDEA

Vous devez (mode CFB 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 encryptage, 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 Applied Cryptography by Schneier (ISBN 0-471-11709-9) pour plus de détails sur le sujet).

Table des matières
mcrypt_get_cipher_name — Retourne le nom du chiffrement donné
mcrypt_get_block_size — Retourne la taille du block du chiffrement associé
mcrypt_get_key_size — Retourne la taille de la clé du chiffrement associé
mcrypt_create_iv — Cree un vecteur d'initialisation (IV) à paritr d'une source aléatoire
mcrypt_cbc — Crypte/décrypte en mode CBC
mcrypt_cfb — Crypte/décrypte en mode CFB
mcrypt_ecb — Crypte/décrypte en mode ECB
mcrypt_ofb — Crypte/décrypte en mode OFB
Précédent Sommaire Suivant
Tan Chapitre mcrypt_get_cipher_name