DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions Hash
  • Notes
  • Disponibilité des algorithmes
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Calcule le Hash d'un fichier d'après un algorithme défini. Il est possible de calculer :
  • un hash simple.
  • un hash avec authentification de message.
  • un hash obtenu par un algorithme de dérivation de clé qui prend en paramètre un sel (PBKDF2).
    AndroidWidget AndroidJavaPHP Non disponible.
Rappel : Le hachage permet de réaliser un résumé condensé d'un fichier ou d'une chaîne de caractères. Ce résumé est appelé Hash.
Attention : Le résultat peut contenir des caractères non affichables. Si vous souhaitez obtenir une chaîne de caractères contenant les représentations hexadécimales des octets, pour une utilisation dans des contextes tels qu'un affichage ou une API REST ou SOAP, vous pouvez utiliser la fonction BufferVersHexa avec la constante SansRegroupement sur le buffer résultat.
WINDEVWEBDEV - Code ServeurEtats et RequêtesCode Utilisateur (MCU)Ajax
// Calcul du Hash de deux fichiers
Hash1 est un Buffer = HashFichier(HA_MD5_128, "C:\Mes fichiers\FichierA.txt")
Hash2 est un Buffer = HashFichier(HA_MD5_128, "D:\Mes fichiers\FichierB.txt")
// Comparaison des deux Hash
SI Hash1 = Hash2 ALORS Info("Les deux fichiers sont identiques.")
Syntaxe

Calculer un hash simple Masquer les détails

<Résultat> = HashFichier(<Type d'algorithme> , <Chemin du fichier> [, <Jauge>])
<Résultat> : Buffer
Résultat du hachage du fichier <Chemin du fichier> avec l'algorithme <Type d'algorithme>.
<Type d'algorithme> : Constante de type Entier
Indique le type d'algorithme utilisé lors du hachage du fichier <Chemin du fichier> :
Famille MD4HA_MD4

Famille MD5HA_MD5_128
Attention : ce type d'algorithme est actuellement déprécié.
Famille MURMUR
  • HA_MURMUR_1 : Algorithme Murmur version 1 : hash résultat sur 32 bits
  • HA_MURMUR_2 : Algorithme Murmur version 2 : hash résultat sur 32 bits
  • HA_MURMUR_2_64A : Algorithme Murmur version 2 : hash résultat sur 64 bits optimisé pour processeurs 64 bits
  • HA_MURMUR_2_64B : Algorithme Murmur version 2 : hash résultat sur 64 bits optimisé pour processeurs 32 bits
  • HA_MURMUR_2_A : Algorithme Murmur version 2 incrémentiel : hash résultat sur 32 bits
  • HA_MURMUR_2_BIG_ENDIAN : Algorithme Murmur version 2 pour machine big-endian: hash résultat sur 32 bits
  • HA_MURMUR_2_ALIGNE : Algorithme Murmur version 2 pour machine alignée : hash résultat sur 32 bits
  • HA_MURMUR_3_32 : Algorithme Murmur version 3 : hash résultat sur 32 bits
  • HA_MURMUR_3_128_X86 : Algorithme Murmur version 3 : hash résultat sur 128 bits optimisé pour processeur 32 bits
  • HA_MURMUR_3_128_X64 : Algorithme Murmur version 3 : hash résultat sur 128 bits optimisé pour processeur 64 bits
Java Les constantes de cette famille ne sont pas disponibles.
Famille RIPEMD
  • HA_RIPEMD_128
  • HA_RIPEMD_160
Java Les constantes de cette famille ne sont pas disponibles.
Famille SHA
  • HA_SHA_160 (aussi appelé SHA-1)
  • HA_SHA_256 (spécifications FIPS PUB 198)
  • HA_SHA_256_DOUBLE
  • HA_SHA_384
  • HA_SHA_512
Famille SHA-3
  • HA_SHA3_224
  • HA_SHA3_256
  • HA_SHA3_384
  • HA_SHA3_512
Famille TIGER
  • HA_TIGER_128
  • HA_TIGER_160
  • HA_TIGER_192
Java Les constantes de cette famille ne sont pas disponibles.
Famille WHIRLPOOLHA_WHIRLPOOL
Java Non disponible.
Famille CKSUM
  • HA_CKSUM_8
  • HA_CKSUM_16
  • HA_CKSUM_32
  • HA_CKSUM_64
Java Les constantes de cette famille ne sont pas disponibles.
  • Algorithmes MD4 / MD5 / SHA / RIPEMD : fonctions de hachage cryptographiques classiques.
  • Algorithmes TIGER / WHIRLPOOL : fonctions de hachage ayant de très bonnes propriétés cryptographiques optimisées pour le 64 bits (mais leur utilisation est possible en 32 bits).
  • Algorithmes CKSUM : fonctions de hachage ne possédant pas de propriété cryptographique, à n'utiliser que pour des contrôles minimaux ou des tables de hachage.
  • Algorithme MURMUR : fonctions de hachage très rapides et ne possédant pas de propriétés cryptographiques. C'est l'algorithme utilisé pour le "bloom filter" des portefeuilles bitcoin.
<Chemin du fichier> : Chaîne de caractères
Chemin du fichier sur lequel sera effectué le calcul.
<Jauge> : Nom de fenêtre optionnel ou nom de champ optionnel
WINDEVWEBDEV - Code ServeurUniversal Windows 10 AppiPhone/iPadWidget IOSMac Catalyst
  • Nom de la fenêtre dans laquelle la jauge doit être affichée,
  • Nom du champ de type Jauge à utiliser.
WEBDEV - Code Serveur Ce paramètre n'est pas pris en compte.

Calculer un hash avec authentification de message (algorithme HMAC/algorithme MURMUR) Masquer les détails

<Résultat> = HashFichier(<Type d'algorithme> , <Chemin du fichier> , <Clé secrète> [, <Jauge>])
<Résultat> : Buffer
Résultat du hachage du fichier <Chemin du fichier> avec l'algorithme <Type d'algorithme>.
Attention : Ce résultat peut contenir des caractères non affichables.
<Type d'algorithme> : Constante de type Entier
Indique le type d'algorithme HMAC utilisé lors du hachage du fichier <Chemin du fichier> :
Famille MD4HA_HMAC_MD4

Famille MD5HA_HMAC_MD5_128
Attention : ce type d'algorithme est actuellement déprécié.
Famille MURMUR
  • HA_MURMUR_1 : Algorithme Murmur version 1 : hash résultat sur 32 bits
  • HA_MURMUR_2 : Algorithme Murmur version 2 : hash résultat sur 32 bits
  • HA_MURMUR_2_64A : Algorithme Murmur version 2 : hash résultat sur 64 bits optimisé pour processeurs 64 bits
  • HA_MURMUR_2_64B : Algorithme Murmur version 2 : hash résultat sur 64 bits optimisé pour processeurs 32 bits
  • HA_MURMUR_2_A : Algorithme Murmur version 2 incrémentiel : hash résultat sur 32 bits
  • HA_MURMUR_2_BIG_ENDIAN : Algorithme Murmur version 2 pour machine big-endian: hash résultat sur 32 bits
  • HA_MURMUR_2_ALIGNE : Algorithme Murmur version 2 pour machine alignée : hash résultat sur 32 bits
  • HA_MURMUR_3_32 : Algorithme Murmur version 3 : hash résultat sur 32 bits
  • HA_MURMUR_3_128_X86 : Algorithme Murmur version 3 : hash résultat sur 128 bits optimisé pour processeur 32 bits
  • HA_MURMUR_3_128_X64 : Algorithme Murmur version 3 : hash résultat sur 128 bits optimisé pour processeur 64 bits
Java Les constantes de cette famille ne sont pas disponibles.
Famille RIPEMD
  • HA_HMAC_RIPEMD_128
  • HA_HMAC_RIPEMD_160
Java Les constantes de cette famille ne sont pas disponibles.
Famille SHA
  • HA_HMAC_SHA_160
  • HA_HMAC_SHA_256
  • HA_HMAC_SHA_256_DOUBLE
  • HA_HMAC_SHA_384
  • HA_HMAC_SHA_512
Famille SHA-3
  • HA_HMAC_SHA3_224
  • HA_HMAC_SHA3_256
  • HA_HMAC_SHA3_384
  • HA_HMAC_SHA3_512
Famille TIGER
  • HA_HMAC_TIGER_128
  • HA_HMAC_TIGER_160
  • HA_HMAC_TIGER_192
Java Les constantes de cette famille ne sont pas disponibles.
Famille WHIRLPOOLHA_HMAC_WHIRLPOOL
Java Non disponible.
  • Algorithmes MD4 / MD5 / SHA / RIPEMD : fonctions de hachage cryptographiques classiques.
  • Algorithmes TIGER / WHIRLPOOL : fonctions de hachage ayant de très bonnes propriétés cryptographiques optimisées pour le 64 bits (mais leur utilisation est possible en 32 bits).
  • Algorithme MURMUR : fonctions de hachage très rapides et ne possédant pas de propriétés cryptographiques. C'est l'algorithme utilisé pour le "bloom filter" des portefeuilles bitcoin.
<Chemin du fichier> : Chaîne de caractères
Chemin du fichier sur lequel sera effectué le calcul.
<Clé secrète> : Chaîne de caractères ou Entier
Clé d'authentification du message.
  • Si un algorithme HMAC est utilisé, ce paramètre doit être une chaîne.
  • Si un algorithme MURMUR est utilisé, la clé doit être un entier.
AndroidWidget AndroidJava Ce paramètre ne doit pas être une chaîne vide.
<Jauge> : Nom de champ optionnel ou nom de fenêtre optionnel
WINDEVWEBDEV - Code ServeurUniversal Windows 10 AppiPhone/iPadWidget IOSMac Catalyst
  • Nom de la fenêtre dans laquelle la jauge doit être affichée,
  • Nom du champ de type Jauge à utiliser.
WEBDEV - Code Serveur Ce paramètre n'est pas pris en compte.
WindowsLinuxUniversal Windows 10 AppiPhone/iPadWidget IOSMac Catalyst

Calculer un hash via un algorithme de dérivation de clé qui prend en paramètre un sel (PBKDF2) Masquer les détails

<Résultat> = HashFichier(<Type d'algorithme> , <Chemin du fichier> , <Sel> , <Itération> , <Longueur> [, <Jauge>])
<Résultat> : Buffer
Résultat du hachage du fichier <Chemin du fichier> avec l'algorithme <Type d'algorithme>.
Attention : Ce résultat peut contenir des caractères non affichables.
<Type d'algorithme> : Constante de type Entier
Indique le type d'algorithme pseudo-aléatoire utilisé par PBKDF2 lors du hachage du fichier <Chemin du fichier> :
Famille MD4HA_PBKDF2_HMAC_MD4
Famille MD5HA_PBKDF2_HMAC_MD5_128
Attention : ce type d'algorithme est actuellement déprécié.
Famille RIPEMD
  • HA_PBKDF2_HMAC_RIPEMD_128
  • HA_PBKDF2_HMAC_RIPEMD_160
Famille SHA
  • HA_PBKDF2_HMAC_SHA_160
  • HA_PBKDF2_HMAC_SHA_256
  • HA_PBKDF2_HMAC_SHA_256_DOUBLE
  • HA_PBKDF2_HMAC_SHA_384
  • HA_PBKDF2_HMAC_SHA_512
Famille SHA-3
  • HA_PBKDF2_HMAC_SHA3_224
  • HA_PBKDF2_HMAC_SHA3_256
  • HA_PBKDF2_HMAC_SHA3_384
  • HA_PBKDF2_HMAC_SHA3_512
Famille TIGER
  • HA_PBKDF2_HMAC_TIGER_128
  • HA_PBKDF2_HMAC_TIGER_160
  • HA_PBKDF2_HMAC_TIGER_192
Famille WHIRLPOOLHA_PBKDF2_HMAC_WHIRLPOOL
  • Algorithmes MD4 / MD5 / SHA / RIPEMD : fonctions de hachage cryptographiques classiques.
  • Algorithmes TIGER / WHIRLPOOL : fonctions de hachage ayant de très bonnes propriétés cryptographiques optimisées pour le 64 bits (mais leur utilisation est possible en 32 bits).
<Chemin du fichier> : Chaîne de caractères
Chemin du fichier sur lequel sera effectué le calcul.
<Sel> : Chaîne de caractères
Sel cryptographique utilisé. Chaîne, généralement aléatoire, ajoutée au fichier pour modifier son empreinte.
<Itération> : Entier
Nombre d'itérations de l'algorithme (par défaut, 10000). Ce nombre dépend de la puissance de la machine de calcul et de la criticité du hachage. Un nombre minimum de 1000 itérations est en général recommandé.
<Longueur> : Entier
Longueur de la clé dérivée. Par défaut, correspond à la taille de la clé générée par l'algorithme pseudo-aléatoire. Cette longueur est techniquement non-bornée mais de par l'algorithme, elle est limitée à (2^32 – 1) * (la longueur des chaînes sorties par l'algorithme utilisé par PBKDF2).
<Jauge> : Nom de fenêtre optionnel ou nom de champ optionnel
WINDEVWEBDEV - Code ServeurUniversal Windows 10 AppiPhone/iPadWidget IOSMac Catalyst
  • Nom de la fenêtre dans laquelle la jauge doit être affichée,
  • Nom du champ de type Jauge à utiliser.
WEBDEV - Code Serveur Ce paramètre n'est pas pris en compte.
Remarques

Notes

  • Deux fichiers de contenu identique auront, pour un même type d'algorithme, deux Hash identiques.
  • Le résultat du Hash peut contenir des caractères non affichables. Ces caractères ne pourront pas être vus lors de l'utilisation par exemple des fonctions Info ou Trace.
JavaPHP

Disponibilité des algorithmes

PHP Les algorithmes disponibles dépendent de la configuration du serveur PHP (présence de l'extension 'mhash', version 5 de PHP avec sa fonction native hash, etc).
Java Seuls les algorithmes suivants sont supportés :
  • HA_HMAC_MD5_128
  • HA_HMAC_SHA_160, HA_HMAC_SHA_256, HA_HMAC_SHA_384, HA_SHA_HMAC_512
  • HA_HMAC_SHA_256_DOUBLE
  • HA_MD4
  • HA_MD5_128
  • HA_SHA_160, HA_SHA_256, HA_SHA_384, HA_SHA_512
  • HA_SHA_256_DOUBLE
Liste des exemples associés :
Les fonctions de Hashage Exemples unitaires (WINDEV) : Les fonctions de Hashage
[ + ] Utilisation des fonctions de hashage.
Les fonctions HashFichier et HashChaîne permettent de calculer une clé de Hashage pour une chaîne ou pour un fichier.
Cette clé de Hashage permet par exemple de :
- Vérifier que le fichier est intègre suite à un transfert par exemple
- Rechercher des doublons de fichiers
- ...
Classification Métier / UI : Code métier
Composante : wd290com.dll
Version minimum requise
  • Version 11
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 29/08/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale