Rechercher une fonction PHP

mcrypt_encrypt

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_encryptChiffre un texte

Avertissement

Cette fonction est devenue OBSOLETE depuis PHP 7.1.0. Nous vous encourageons vivement à ne plus l'utiliser.

Description

string mcrypt_encrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

mcrypt_encrypt() chiffre les données, et retourne les données chiffrées.

  

Liste de paramètres

cipher

Une constante parmi les constantes MCRYPT_ciphername, ou le nom de l'algorithme, sous la forme d'une chaîne de caractères.

key

La clé avec laquelle les données seront chiffrées. Si la taille de la clé fournie n'est pas supportée par le cipher, la fonction émettra un warning et retournera FALSE

data

Les données qui seront chiffrées, avec le cipher et le mode indiqué. Si la taille des données n'est pas un multiple de la taille de bloc, les données seront complétées par des caractères '\0', autant que nécessaire.

Le texte chiffré retourné peut être plus long que la taille des données passées en argument via data.

mode

Une constantes parmi les constantes MCRYPT_MODE_modename, ou une des chaînes suivantes : "ecb", "cbc", "cfb", "ofb", "nofb" ou "stream".

iv

Utilisé pour l'initialisation des modes CBC, CFB, OFB, ainsi que dans quelques algorithmes du mode STREAM. Si la taille de l'IV fourni n'est pas supporté par le mode d'opération ou si vous ne fournissez pas d'IV, mais que le mode d'opération en requiert un, la fonction émettra un avertissement et retournera FALSE.

  

Valeurs de retour

Retourne les données chiffrées, sous forme de chaîne de caractères ou FALSE si une erreur survient.

  

Historique

Version Description
5.6.0 Des tailles de clés et IV invalides ne sont plus acceptées. mcrypt_encrypt() va maintenant émettre un warning et retourner FALSE. Précédemment les clés et IVs étaient complétées avec des '\0' jusqu'a la prochaine taille valide.

  

Exemples

Exemple #1 Exemple avec mcrypt_encrypt()

<?php
    
# --- CHIFFREMENT ---

    # la clé devrait être un binaire aléatoire, utilisez la fonction scrypt, bcrypt
    # ou PBKDF2 pour convertir une chaîne de caractères en une clé.
    # La clé est spécifiée en utilisant une notation héxadécimale.
    
$key pack('H*'"bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");
    
    
# Montre la taille de la clé utilisée ; soit des clés sur 16, 24 ou 32 octets pour
    # AES-128, 192 et 256 respectivement.
    
$key_size =  strlen($key);
    echo 
"Taille de la clé : " $key_size "\n";
    
    
$plaintext "Cette chaîne de caractère a été chiffrée en AES-256 / CBC / ZeroBytePadding.";

    
# Crée un IV aléatoire à utiliser avec l'encodage CBC
    
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_CBC);
    
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
    
    
# Crée un texte cipher compatible avec AES (Rijndael block size = 128)
    # pour conserver le texte confidentiel.
    # Uniquement applicable pour les entrées encodées qui ne se terminent jamais
    # pas la valeur 00h (en raison de la suppression par défaut des zéros finaux)
    
$ciphertext mcrypt_encrypt(MCRYPT_RIJNDAEL_128$key,
                                 
$plaintextMCRYPT_MODE_CBC$iv);

    
# On ajoute le IV au début du texte chiffré pour le rendre disponible pour le déchiffrement
    
$ciphertext $iv $ciphertext;
    
    
# Encode le texte chiffré résultant pour qu'il puisse être représenté par une chaîne de caractères
    
$ciphertext_base64 base64_encode($ciphertext);

    echo  
$ciphertext_base64 "\n";

    
# === ATTENTION ===

    # Le texte chiffré résultant ne contient aucune intégrité ni d'authentification
    # et il n'est pas protégé contre des attaques de type "oracle padding".
    
    # --- DECHIFFREMENT ---
    
    
$ciphertext_dec base64_decode($ciphertext_base64);
    
    
# Récupère le IV, iv_size doit avoir été créé en utilisant la fonction
    # mcrypt_get_iv_size()
    
$iv_dec substr($ciphertext_dec0$iv_size);
    
    
# Récupère le texte du cipher (tout, sauf $iv_size du début)
    
$ciphertext_dec substr($ciphertext_dec$iv_size);

    
# On doit supprimer les caractères de valeur 00h de la fin du texte plein
    
$plaintext_dec mcrypt_decrypt(MCRYPT_RIJNDAEL_128$key,
                                    
$ciphertext_decMCRYPT_MODE_CBC$iv_dec);
    
    echo  
$plaintext_dec "\n";
?>

L'exemple ci-dessus va afficher :

Taille de la clé : 32
ENJW8mS2KaJoNB5E5CoSAAu0xARgsR1bdzFWpEn+poYw45q+73az5kYi4j+0haevext1dGrcW8Qi59txfCBV8BBj3bzRP3dFCp3CPQSJ8eU=
Cette chaîne de caractère a été chiffrée en AES-256 / CBC / ZeroBytePadding.

  

Voir aussi

Rechercher une fonction PHP

Version en cache

15/11/2024 19:10:59 Cette version de la page est en cache (à la date du 15/11/2024 19:10:59) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mcrypt-encrypt.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut