4D v16.3

Generate digest

Accueil

 
4D v16.3
Generate digest

Generate digest 


 

Generate 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 Generate 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 On 4D Mobile Authentication database method 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 Generate 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 :

Constante Type Valeur Comment
4D digest Entier long 2 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 On 4D Mobile Authentication database method lorsque vous souhaitez exploiter votre propre liste d'utilisateurs.
MD5 digest Entier long 0 Algorithme Message Digest 5. Séquence de 128 bits retournée en tant que chaîne de 32 caractères hexadécimaux.
SHA1 digest Entier long 1 Algorithme Secure Hash 1. Séquence de 160 bits retournée en tant que chaîne de 40 caractères hexadécimaux.

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 ON ERR CALL, et la fonction retourne une chaîne vide.

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

 PLATFORM PROPERTIES($Platf;$Syst;$vlMachine)
  // Ouvrir le premier document en lecture seule
 $Same:=True
 $vhDocRef1:=Open document("";"*";Read Mode))
 If(OK=1)  // Si un document a été sélectionné
    DOCUMENT TO BLOB(Document;$FirstBlob)  // Charger le document
    If(OK=1)
       If($Platf=Mac OS)
          DOCUMENT TO BLOB(Document;$FirstBlobRF;*)
  // Sous Mac OS, charger la resource fork
          $MD5_1RF:=Generate digest($FirstBlobRF;MD5 digest)
       End if
 
  // Ouvrir le second document en lecture seule
       $vhDocRef2:=Open document("";"*";Read Mode))
       If(OK=1)
          DOCUMENT TO BLOB(Document;$SecondBlob)
          If(OK=1)
             If($Platf=Mac OS)
                DOCUMENT TO BLOB(Document;$SecondBlobRF;*)
                $MD5_2RF:=Generate digest($SecondBlobRF;MD5 digest)
                If($MD5_1RF#$MD5_2RF// Comparer les digests
                   $Same:=False
                End if
             End if
             $MD5_1:=Generate digest($FirstBlob;MD5 digest)
             $MD5_2:=Generate digest($SecondBlob;MD5 digest)
             If(($MD5_1#$MD5_2)|($Same=False))
                ALERT("Ces deux documents sont différents.")
             End if
          End if
       End if
    End if
 End if

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

 $key1:=Generate digest("The quick brown fox jumps over the lazy dog.";MD5 digest)
  // $key1 vaut "e4d909c290d0fb1ca068ffaddf22cbd0"
 $key2:=Generate digest("The quick brown fox jumps over the lazy dog.";SHA1 digest)
  // $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_TEXT($1;$2)
 C_BOOLEAN($0;$3)
     //$1 : utilisateur
     //$2 : mot de passe
     //$3 : mode digest
 If($1="admin")
       If($3)
          $0:=($2=Generate digest("123";4D digest))
       Else
          $0:=($2="123")
       End if
 Else
       $0:=False
 End if

 
PROPRIÉTÉS 

Produit : 4D
Thème : Outils
Numéro : 1147

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
HISTORIQUE 

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

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)