4D v14.3Generer digest |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
Generer digest
|
Generer 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 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 :
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 :
Produit : 4D
Thème : Outils
Numéro :
1147
Nom intl. : Generate digest
Créé : 4D v13
Modifié : 4D v14
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)