Rapide Advanced Adulte
 
 Web|Image|Shop|Video|News|Wmx|Mobile|Wiki|Ajouter ce moteur

     Manuel PHP     
Partager
 
 
Partager
Partager

 

Table :

.Fonctions .NET
.Fonctions Apache
.Alternative PHP Cache
.Débogueur avancé pour PHP
.Tableaux
.Aspell (Obsolète)
.Nombres de grande taille BCMath
.Compilateur bytecode pour PHP
.Compression Bzip2
.Calendrier
.Paiement CCVS (Obsolète)
.Classes et Objets
.Fonctions Classkit
.Fonctions ClibPDF
.COM et .Net (Windows)
.Crack
.Caractères
.CURL
.Paiement Cybercash
.Fonctions Crédit Mutuel CyberMUT
.Cyrus IMAP
.Dates et heures
.Fonctions DB++
.DBA
.dBase
.DBM (Obsolète)
.Fonctions dbx
.Direct IO
.Accès aux dossiers
.Fonctions DOM
.Fonctions DOM XML
.Fonctions enchant
.Gestion des erreurs
.EXIF
.Fonctions Expect
.Fonctions de monitorage d'altération de fichiers
.Forms Data Format
.Fonctions Fileinfo
.Fonctions filePro
.Système de fichiers
.Fonctions Filter
.Fonctions Firebird/InterBase
.Fonctions Firebird/Interbase (PDO FIREBIRD)
.Fonctions FriBiDi
.FrontBase
.Fonctions FTP
.Fonctions
.Fonctions GeoIP
.Gettext (GNU)
.Fonctions GMP
.gnupg Fonctions
.Net Gopher
.Fonctions hash
.HTTP
.Hyperwave
.Hyperwave API
.Fonctions IBM (PDO IBM)
.Fonctions IBM DB2, Cloudscape et Apache Derby
.ICAP
.Iconv
.Fonctions ID3
.Fonctions d'administration d'IIS
.Images
.Image magick Functions
.IMAP
.Informix
.Fonctions Informix (PDO INFORMIX)
.Ingres II
.IRC
.Intégration de Java avec PHP
.Fonctions JSON
.KADM5
.LDAP
.libxml
.Lotus Notes
.Fonctions LZF
.Mail
.Traitement d'email
.Mathématiques
.MaxDB PHP Extension
.MCAL
.chiffrement mcrypt
.Fonctions de paiement MCVE (Monetra)
.Fonctions Memcache
.Hash
.Fonctions Mimetype
.Ming pour Flash
.Fonctions diverses
.mnoGoSearch
.Microsoft SQL Server
.Microsoft SQL Server et Fonctions Sybase (PDO DBLIB)
.Sessions Mohawk
.mSQL
.Chaînes de caractères multi-octets
.Fonctions muscat
.MySQL
.Fonctions MySQL (PDO MYSQL)
.Extension MySQL améliorée
.Fonctions de contrôle d'écran de terminal
.Réseau
.Fonctions Newt
.Netscape Server API
.agrégation d'objets/Composition de fonctions
.Overload
.Fonctions Oracle
.Fonctions ODBC (unifiés)
.Fonctions ODBC et DB2 (PDO ODBC)
.oggvorbis
.Gestion Audio OpenAL
.OpenSSL
.Oracle (Obsolète)
.Fonctions Oracle (PDO OCI)
.Bufferisation de sortie
.Ovrimos SQL
.Accès aux fichiers Paradox
.Fonctions Parsekit
.Contrôle des processus
.Expressions rationnelles compatibles Perl
.Fonctions PDF
.Fonctions PDO
.Phar archive stream and classes
.Options PHP et informations
.Fonctions POSIX
.Expressions rationnelles
.PostgreSQL
.Fonctions PostgreSQL (PDO PGSQL)
.Impression
.Exécution de programmes externes
.Création de document PostScript
.Pspell
.qtdom
.Radius
.Rar
.Readline (GNU)
.Recode (GNU)
.Fonctions Lecture d'En-tête RPM
.Fonctions runkit
.SAM - Messagerie asynchrone
.Extension client Satellite CORBA (Obsolète)
.SCA Functions
.Fonctions SDO
.Fonctions de Service d'Accès de Données SDO XML
.Fonctions SDO Relationnel Service d'Accès de Données
.Sémaphores et gestion de la mémoire partagée
.SESAM
.Sauvegarde d'Identifiant de session PostgreSQL
.Sessions
.Mémoire partagée
.Fonctions SimpleXML
.Fonctions SNMP
.Fonctions SOAP
.Sockets
.Fonctions Standard PHP Library (SPL)
.Fonctions SQLite
.Fonctions SQLite (PDO SQLITE)
.Shell2 sécurisé
.Fonctions statistics
.Flux
.Chaînes de caractères (Strings)
.Shockwave Flash
.Sybase
.Fonctions TCP Wrappers
.Tidy
.Analyseur de code PHP
.Unicode Functions
.URL
.Fonctions de gestion des variables
.Paiement par Verisign
.vpopmail
.API windows
.WDDX
.Fonctions win32ps
.Fonctions win32service
.Fonctions xattr
.Fonctions xdiff
.Analyseur syntaxique XML
.XML-RPC
.XMLReader functions
.Fonctions XMLWriter
.XSL
.XSLT
.YAZ
.NIS
.Fonctions ZIP
.Compression Zlib
 
   

  mcrypt  


LXXXII. chiffrement mcrypt

Introduction

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

Pré-requis

Ces fonctions utilisent mcrypt. Pour utiliser cette bibliothèque, téléchargez le fichier libmcrypt-x.x.tar.gz sur http://mcrypt.sourceforge.net/ et suivez les instructions d'installation fournies. Les utilisateurs Windows trouveront toutes les bibliothèques nécessaires sur http://ftp.emini.dk/pub/php/win32/mcrypt/.

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.

Installation

Vous devez compiler PHP avec l'option --with-mcrypt=[DIR] pour activer cette extension. DIR est le dossier d'installation de mcrypt. Assurez-vous de compiler libmcrypt avec l'option --disable-posix-threads.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

NomPar défautModifiableHistorique
mcrypt.algorithms_dirNULLPHP_INI_ALLDisponible depuis PHP 4.0.2.
mcrypt.modes_dirNULLPHP_INI_ALLDisponible depuis PHP 4.0.2.
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à Annexe G.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes pré-définies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Mcrypt peut opérer en 4 modes de chiffrement (CBC, OFB, CFB, et ECB). Si vous utilisez libmcrypt-2.4.x ou plus récent, les fonctions peuvent aussi opérer en mode nOFB et en mode STREAM. 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).

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

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

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

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

  • MCRYPT_MODE_NOFB (output feedback, in nbit) est comparable à OFB, mais plus sûr, car il opère avec la taille de blocs de l'algorithme.

  • MCRYPT_MODE_STREAM est un mode supplémentaire, pour permettre l'utilisation d' algorithmes tels WAKE ou RC4.

Voici quelques autres modes et méthodes de compression :

MCRYPT_ENCRYPT (entier)

MCRYPT_DECRYPT (entier)

MCRYPT_DEV_RANDOM (entier)

MCRYPT_DEV_URANDOM (entier)

MCRYPT_RAND (entier)

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

Exemples

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.

Exemple 1. Chiffre une valeur avec un TripleDES, en mode ECB.

<?php
$key
= "Cette clé est ultra-secrète";
$input = "Rencontrons-nous dans notre place secrète à 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.

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.

Exemple 2. Cryptage d'une valeur avec TripleDES sous 2.4.x en mode ECB

<?php

$key
= "Ceci est une vraie clé secrète";
$input = "Rendez-vous à 9 heures, dans notre planque.";

$td = mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_ECB, "");
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, $input);
mcrypt_generic_end($td);

?>
Cet exemple va retourner les données cryptées dans la variable $encrypted_data. Pour un exemple complet, voyez mcrypt_module_open().

Table des matières
mcrypt_cbc -- Chiffre/déchiffre des données en mode CBC
mcrypt_cfb -- Chiffre/déchiffre des données en mode CFB
mcrypt_create_iv -- Crée un vecteur d'initialisation à partir d'une source aléatoire
mcrypt_decrypt -- Déchiffre un texte avec les paramètres donnés
mcrypt_ecb -- Obsolète : Chiffre/déchiffre des données en mode ECB
mcrypt_enc_get_algorithms_name -- Retourne le nom de l'algorithme
mcrypt_enc_get_block_size -- Retourne la taille de blocs d'un algorithme
mcrypt_enc_get_iv_size -- Retourne la taille du VI d'un algorithme
mcrypt_enc_get_key_size -- Retourne la taille maximale de la clé pour un mode
mcrypt_enc_get_modes_name -- Retourne le nom du mode
mcrypt_enc_get_supported_key_sizes --  Retourne un tableau contenant les tailles de clés acceptées par un algorithme
mcrypt_enc_is_block_algorithm_mode -- Teste le chiffrement par blocs d'un mode
mcrypt_enc_is_block_algorithm -- Teste le chiffrement par blocs d'un algorithme
mcrypt_enc_is_block_mode -- Teste si le mode retourne les données par blocs
mcrypt_enc_self_test -- Teste un module ouvert
mcrypt_encrypt -- Chiffre un texte
mcrypt_generic_deinit -- Prépare le module pour le déchargement
mcrypt_generic_end -- Termine un chiffrement
mcrypt_generic_init --  Initialise tous les buffers nécessaires
mcrypt_generic -- Chiffre les données
mcrypt_get_block_size -- Retourne la taille de blocs d'un chiffrement
mcrypt_get_cipher_name -- Lit le nom du chiffrement utilisé
mcrypt_get_iv_size --  Retourne la taille du VI utilisé par un couple chiffrement/mode
mcrypt_get_key_size -- Retourne la taille de la clé d'un chiffrement
mcrypt_list_algorithms -- Liste tous les algorithmes de chiffrement supportés
mcrypt_list_modes -- Liste tous les modes de chiffrement supportés
mcrypt_module_close --  Décharge le module de chiffrement
mcrypt_module_get_algo_block_size -- Retourne la taille de blocs d'un algorithme
mcrypt_module_get_algo_key_size -- Retourne la taille maximale de clé
mcrypt_module_get_supported_key_sizes --  Retourne un tableau contenant les tailles de clés supportées par un algorithme de chiffrement
mcrypt_module_is_block_algorithm_mode -- Indique si un mode fonctionne par blocs
mcrypt_module_is_block_algorithm -- Indique si un algorithme fonctionne par blocs
mcrypt_module_is_block_mode -- Indique si un mode travaille par blocs
mcrypt_module_open --  Ouvre le module de l'algorithme et du mode à utiliser
mcrypt_module_self_test -- Teste un mode
mcrypt_ofb -- Chiffre/déchiffre des données en mode OFB
mdecrypt_generic -- Déchiffre

    Annonces       
 

 Retour au chapitre Php

 

Top
 

Ajouter JungleKey.fr à votre Explorateur

 
 

About Us | © 2007 JungleKey




iBlack | Mobile | Wiki | Ajouter ce moteur
.