4D v13.4

Generer digest

Accueil

 
4D v13.4
Generer digest

Generer digest 


 

Generer digest ( param ; algorithme ) -> Résultat 
Paramètre Type   Description
param  BLOB, Variable texte in Blob ou texte pour lequel obtenir une clé digest
algorithme  Entier long in Algorithme utilisé pour retourner la clé :
0 = Digest MD5, 1 = Digest SHA1
Résultat  Texte in Valeur de la clé digest

La commande Generer digest retourne la clé digest d’un BLOB ou d’un texte après application d’un algorithme de cryptage.

Dans 4D, deux algorithmes sont disponibles : MD5 (Message Digest 5) et SHA-1 (Secure Hash 1). Ces algorithmes sont des fonctions de hachage différentes :

  • MD5 est une séquence de 16 octets retournée en tant que chaîne de 32 caractères hexadécimaux.
  • SHA-1 est une séquence de 20 octets retournée en tant que chaîne de 40 caractères hexadécimaux.

La valeur retournée pour un même objet sera identique sur toutes les plates-formes (Mac/Windows, 32 ou 64 bits). Le calcul est effectué à partir de la représentation en UTF8 du texte passé en paramètre, quel que soit le mode de fonctionnement de la base de données (Unicode ou compatibilité ASCII). 

Note : Si vous utilisez la commande avec un texte/BLOB vide, elle ne retournera pas void mais la valeur suivante : "d41d8cd98f00b204e9800998ecf8427e" (MD5) ou "da39a3ee5e6b4b0d3255bfef95601890afd80709" (SHA-1).

Passez un champ ou une variable Texte ou BLOB dans le paramètre param. La clé digest est retournée sous forme de chaîne par la fonction Generer digest.

Passez dans le paramètre algorithme une valeur désignant la fonction de hachage à employer. Vous pouvez utiliser l’une des constantes suivantes, placées dans le thème Type digest :

Constante Type Valeur Commentaire
Digest MD5 Entier long 0 Utiliser l’algorithme MD5
Digest SHA1 Entier long 1 Utiliser l’algorithme SHA-1

Si le calcul de la clé digest ne s’exécute pas correctement, la fonction génère une erreur que vous pouvez intercepter à l’aide de la commande APPELER SUR ERREUR, et la fonction retourne une chaîne vide.

Cet exemple vous permet de comparer deux documents à l’aide de l’algorithme MD5 :

 PROPRIETES PLATE FORME($Platf;$Syst;$vlMachine)
  // Ouvrir le premier document en lecture seule
 $Same:=Vrai
 $vhDocRef1:=Ouvrir document("";"*";Mode lecture))
 Si(OK=1)  // Si un document a été sélectionné
    DOCUMENT VERS BLOB(Document;$FirstBlob)  // Charger le document
    Si(OK=1)
       Si($Platf=Mac OS)
          DOCUMENT VERS BLOB(Document;$FirstBlobRF;*)
  // Sous Mac OS, charger la resource fork
          $MD5_1RF:=Generer digest($FirstBlobRF;Digest MD5)
       Fin de si
 
  // Ouvrir le second document en lecture seule
       $vhDocRef2:=Ouvrir document("";"*";Mode lecture))
       Si(OK=1)
          DOCUMENT VERS BLOB(Document;$SecondBlob)
          Si(OK=1)
             Si($Platf=Mac OS)
                DOCUMENT VERS BLOB(Document;$SecondBlobRF;*)
                $MD5_2RF:=Generer digest($SecondBlobRF;Digest MD5)
                Si($MD5_1RF#$MD5_2RF// Comparer les digests
                   $Same:=Faux
                Fin de si
             Fin de si
             $MD5_1:=Generer digest($FirstBlob;Digest MD5)
             $MD5_2:=Generer digest($SecondBlob;Digest MD5)
             Si(($MD5_1#$MD5_2)|($Same=Faux))
                ALERTE("Ces deux documents sont différents.")
             Fin de si
          Fin de si
       Fin de si
    Fin de si
 Fin de si

Ces exemples illustrent comment récupérer la clé digest d’un texte :

 $key1:=Generer digest("The quick brown fox jumps over the lazy dog.";Digest MD5)
  // $key1 vaut "e4d909c290d0fb1ca068ffaddf22cbd0"
 $key2:=Generer digest("The quick brown fox jumps over the lazy dog.";Digest SHA1)
  // $key2 vaut "408d94384216f890ff7a0c3528e8bed1e0b01621"

 
PROPRIÉTÉS 

Produit : 4D
Thème : Outils
Numéro : 1147
Nom intl. : Generate digest

 
INDEX

Liste alphabétique des commandes

 
HISTORIQUE 

New
Créé : 4D v13