4D v15.4Generate digest |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v15.4
Generate digest
|
Generate digest ( param ; algorithme ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
param | BLOB, Variable texte |
![]() |
Blob ou texte pour lequel obtenir une clé digest | |||||
algorithme | Entier long |
![]() |
Algorithme utilisé pour retourner la clé : 0 = Digest MD5, 1 = Digest SHA1, 2 = Digest 4D |
|||||
Résultat | Texte |
![]() |
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 :
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 Type digest :
Constante | Type | Valeur |
Digest 4D | Entier long | 2 |
Digest MD5 | Entier long | 0 |
Digest SHA1 | Entier long | 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 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 :
Produit : 4D
Thème : Outils
Numéro :
1147
Créé : 4D v13
Modifié : 4D v14
4D - Langage ( 4D v15)
4D - Langage ( 4D v15.4)
4D - Langage ( 4D v15.3)