4D v14.3

Generer digest

Accueil

 
4D v14.3
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, 2 = Digest 4D
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, les algorithmes suivants sont disponibles : MD5 (Message Digest 5) et SHA-1 (Secure Hash 1) ainsi que 4D (algorithme interne). 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.
  • 4D désigne l'algorithme interne utilisé par 4D pour crypter les mots de passe des utilisateurs. L'utilisation de cet algorithme est particulièrement utile dans le cadre de la Méthode base Sur authentification 4D Mobile lorsque vous souhaitez exploiter votre propre liste d'utilisateurs.

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. 

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 4D Entier long 2 Utiliser l’algorithme interne de 4D
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"

Cet exemple n’accepte que l’utilisateur "admin" avec le mot de passe "123" ne correspondant pas à un utilisateur 4D :

     //Méthode base sur authentification REST
 C_TEXTE($1;$2)
 C_BOOLEEN($0;$3)
     //$1 : utilisateur
     //$2 : mot de passe
     //$3 : mode digest
 Si($1="admin")
       Si($3)
          $0:=($2=Generer digest("123";Digest 4D))
       Sinon
          $0:=($2="123")
       Fin de si
 Sinon
       $0:=Faux
 Fin de si

 
PROPRIÉTÉS 

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

 
HISTORIQUE 

New
Créé : 4D v13
Modifié : 4D v14

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v14 R3)
4D - Langage ( 4D v14.3)
4D - Langage ( 4D v14 R4)

Hérité de : Generer digest ( 4D v13.5)