4D v16.3Generer digest |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.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 :
Constante | Type | Valeur | Comment |
Digest 4D | 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 Méthode base Sur authentification 4D Mobile lorsque vous souhaitez exploiter votre propre liste d'utilisateurs. |
Digest MD5 | 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. |
Digest SHA1 | 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 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
Produit : 4D
Thème : Outils
Numéro :
1147
Nom intl. : Generate digest
Créé : 4D v13
Modifié : 4D v14
4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)