ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

This content has been translated automatically.  Click here  to view the French version.
Help / WLanguage / WLanguage functions / Standard functions / Hash functions
  • Availability of algorithms
  • HashCheckString and UNICODE
WINDEV
WindowsLinuxJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac Catalyst
Others
Stored procedures
HashCheckString (Function)
In french: HashVérifieChaîne
Checks the Hash of a character string for a specific type of algorithm. You have the ability to check:
  • a simple hash.
  • a hash with message authentication.
  • a hash obtained with a key derivation function that takes a salt as parameter (PBKDF2).
    WEBDEV - Browser codeAndroidAndroid Widget JavaPHP Not available.
Reminder Hashing is used to produce a condensed summary of a file or character string. This summary is called Hash.
Example
WindowsLinuxAndroidAndroid Widget iPhone/iPadIOS WidgetMac CatalystJavaPHP
// Vérification du mot de passe : 
// - Mot de passe saisi dans le champ "SAI_SaisieMotDePasse"
// - Hash du mot de passe dans la rubrique "Utilisateur.HashMotDePasse"
IF HashCheckString(HA_MD5_128, SAI_SaisieMotDePasse, ...
		Utilisateur.HashMotDePasse) = True THEN
	Info("Mot de passe correct.")
	// Suite du traitement
	// ...
ELSE
	Error("Mot de passe erroné.")
	// Reprise de la saisie
	SetFocusAndReturnToUserInput(SAI_SaisieMotDePasse)
END
WEBDEV - Browser code
sHash is string = "9F 04 F4 1A 84 85 14 16 20 50 E3 D6"
HashCheckString(HA_SHA_160, "abc", HexaToBuffer(sHash), HashVérifieChaîne_Callback)

INTERNAL PROCEDURE HashVérifieChaîne_Callback(bRes boolean)
	IF bRes = False THEN Trace("Erreur lors de la vérification")
END
Syntax

Checking a simple hash Hide the details

<Result> = HashCheckString(<Type of algorithm> , <String> , <Hash>)
<Result>: Boolean
  • True if the result when <String> was hashed by <Type of algorithm> corresponds to <Hash>,
  • False otherwise.
<Type of algorithm>: Integer constant
Indicates the type of algorithm used when hashing the <String>:
DJB2 family (Bernstein)
  • HA_DJB2_32
  • HA_DJB2_64
JavaPHP The constants of this family are not available.
MD4 familyHA_MD4
MD5 familyHA_MD5_128
Please note: this type of algorithm is currently deprecated.
MURMUR family
  • HA_MURMUR_1 Murmur algorithm version 1: 32-bit hash result
  • HA_MURMUR_2 Murmur algorithm version 2: 32-bit hash result
  • HA_MURMUR_2_64A Murmur algorithm version 2: 64-bit hash result optimized for 64-bit processors
  • HA_MURMUR_2_64B Murmur algorithm version 2: 64-bit hash result optimized for 32-bit processors
  • HA_MURMUR_2_A Murmur version 2 incremental algorithm: 32-bit hash result
  • HA_MURMUR_2_BIG_ENDIAN Murmur algorithm version 2 for big-endian machine: 32-bit hash result
  • HA_MURMUR_2_ALIGNE Murmur algorithm version 2 for aligned machine: 32-bit hash result
  • HA_MURMUR_3_32 Murmur algorithm version 3: 32-bit hash result
  • HA_MURMUR_3_128_X86 Murmur algorithm version 3: 128-bit hash result optimized for 32-bit processors
  • HA_MURMUR_3_128_X64 Murmur algorithm version 3: 128-bit hash result optimized for 64-bit processors
Java The constants of this family are not available.
RIPEMD family
  • HA_RIPEMD_128
  • HA_RIPEMD_160
Java The constants of this family are not available.
SHA family
  • HA_SHA_160 (also called SHA-1)
  • HA_SHA_256 (FIPS PUB 198 specifications)
  • HA_SHA_256_DOUBLE
  • HA_SHA_384
  • HA_SHA_512
SHA-3 family
  • HA_SHA3_224
  • HA_SHA3_256
  • HA_SHA3_384
  • HA_SHA3_512
TIGER family
  • HA_TIGER_128
  • HA_TIGER_160
  • HA_TIGER_192
Java The constants of this family are not available.
WHIRLPOOL familyHA_WHIRLPOOL
Java Not available.
CKSUM family
  • HA_CKSUM_8
  • HA_CKSUM_16
  • HA_CKSUM_32
  • HA_CKSUM_64
Java The constants of this family are not available.
  • MD4 / MD5 / SHA / RIPEMD algorithms: classic cryptographic hash functions.
  • TIGER / WHIRLPOOL algorithms: hash functions with very good cryptographic properties, optimized for 64-bit (but can be used in 32-bit).
  • CKSUM algorithms: hash functions with no cryptographic properties, to be used only for minimal checks or hash tables.
  • DJB2 algorithm (Bernstein): string-only hash functions with no cryptographic properties, to be used only for minimal checks or hash tables. Few risks to get an identical hash.
  • MURMUR algorithm: very fast hash functions with no cryptographic properties. This algorithm is used by the "bloom filter" of bitcoin wallets.
<String>: Character string
String for which the Hash will be checked.
<Hash>: Character string
Hash of string to check. This Hash must be the result of HashString previously called for <String> using the <Type of algorithm>.
WEBDEV - Browser code

Checking a simple hash Hide the details

HashCheckString(<Type of algorithm> , <String> , <Hash> , <WLanguage procedure>)
<Type of algorithm>: Integer constant
Indicates the type of algorithm used when hashing the <String>:
SHA family
  • HA_SHA_160 (also called SHA-1)
  • HA_SHA_256 (FIPS PUB 198 specifications)
  • HA_SHA_256_DOUBLE
  • HA_SHA_384
  • HA_SHA_512

Remarks:
  • These hash algorithms are not allowed in Internet Explorer.
  • The HA_SHA_160 algorithm is not allowed in Edge.
<String>: Character string
String for which the Hash will be checked.
<Hash>: Character string
Hash of string to check. This Hash must be the result of HashString previously called for <String> using the <Type of algorithm>.
<WLanguage procedure>: Procedure name
Name of the WLanguage procedure ("callback") called when hashing. This procedure is used to get the hash result. For more details, see Procedure used by HashCheckString.

Checking a hash with message authentication (HMAC/MURMUR algorithm) Hide the details

<Result> = HashCheckString(<Type of algorithm> , <String> , <Hash> , <Secret key>)
<Result>: Boolean
  • True if the result when <String> was hashed by <Type of algorithm> corresponds to <Hash>,
  • False otherwise.
<Type of algorithm>: Integer constant
Indicates the type of algorithm (HMAC or MURMUR) used to hash the <String>:
MD4 familyHA_HMAC_MD4

MD5 familyHA_HMAC_MD5_128
Please note: this type of algorithm is currently deprecated.
MURMUR family
  • HA_MURMUR_1 Murmur algorithm version 1: 32-bit hash result
  • HA_MURMUR_2 Murmur algorithm version 2: 32-bit hash result
  • HA_MURMUR_2_64A Murmur algorithm version 2: 64-bit hash result optimized for 64-bit processors
  • HA_MURMUR_2_64B Murmur algorithm version 2: 64-bit hash result optimized for 32-bit processors
  • HA_MURMUR_2_A Murmur version 2 incremental algorithm: 32-bit hash result
  • HA_MURMUR_2_BIG_ENDIAN Murmur algorithm version 2 for big-endian machine: 32-bit hash result
  • HA_MURMUR_2_ALIGNE Murmur algorithm version 2 for aligned machine: 32-bit hash result
  • HA_MURMUR_3_32 Murmur algorithm version 3: 32-bit hash result
  • HA_MURMUR_3_128_X86 Murmur algorithm version 3: 128-bit hash result optimized for 32-bit processors
  • HA_MURMUR_3_128_X64 Murmur algorithm version 3: 128-bit hash result optimized for 64-bit processors
Java The constants of this family are not available.
RIPEMD family
  • HA_HMAC_RIPEMD_128
  • HA_HMAC_RIPEMD_160
Java The constants of this family are not available.
SHA family
  • HA_HMAC_SHA_160
  • HA_HMAC_SHA_256
  • HA_HMAC_SHA_256_DOUBLE
  • HA_HMAC_SHA_384
  • HA_HMAC_SHA_512
SHA-3 family
  • HA_HMAC_SHA3_224
  • HA_HMAC_SHA3_256
  • HA_HMAC_SHA3_384
  • HA_HMAC_SHA3_512
TIGER family
  • HA_HMAC_TIGER_128
  • HA_HMAC_TIGER_160
  • HA_HMAC_TIGER_192
Java The constants of this family are not available.
WHIRLPOOL familyHA_HMAC_WHIRLPOOL
Java Not available.
  • MD4 / MD5 / SHA / RIPEMD algorithms: classic cryptographic hash functions.
  • TIGER / WHIRLPOOL algorithms: hash functions with very good cryptographic properties, optimized for 64-bit (but can be used in 32-bit).
  • MURMUR algorithm: very fast hash functions with no cryptographic properties. This algorithm is used by the "bloom filter" of bitcoin wallets.
<String>: Character string
String for which the Hash will be checked.
<Hash>: Character string
Hash of string to check. This Hash must be the result of HashString previously called for <String> using the <Type of algorithm>.
<Secret key>: Character string or Secret string
Authentication key of message. This key must be identical to the one used to calculate the Hash.
New in version 2025
Secret strings: If you use the secret string vault, the type of secret string used for this parameter can be:
  • Buffer - ASCII or Buffer - UTF-8,
  • ANSI string - Latin,
  • ANSI or Unicode string,
  • Unicode string.
To learn more about secret strings and how to use the vault, see Secret string vault.
New in version 2025
AndroidAndroid Widget Secret strings are not available for this parameter in Android/Android widget applications.
AndroidAndroid Widget Java This parameter must not be an empty string.
WEBDEV - Browser code

Checking a hash with message authentication (HMAC algorithm) Hide the details

HashCheckString(<Type of algorithm> , <String> , <Hash> , <Secret key> , <WLanguage procedure>)
<Type of algorithm>: Integer constant
Indicates the type of algorithm (HMAC) used to hash the <String> string:
SHA family
  • HA_HMAC_SHA_160
  • HA_HMAC_SHA_256
  • HA_HMAC_SHA_384
  • HA_HMAC_SHA_512

Remarks:
  • These hash algorithms are not allowed in Internet Explorer.
  • These hash algorithms are not allowed in Edge.
<String>: Character string
String for which the Hash will be checked.
<Hash>: Character string
Hash of string to check. This Hash must be the result of HashString previously called for <String> using the <Type of algorithm>.
<Secret key>: Character string or Secret string
Authentication key of message. This key must be identical to the one used to calculate the Hash.
New in version 2025
Secret strings: If you use the secret string vault, the type of secret string used for this parameter can be:
  • Buffer - ASCII or Buffer - UTF-8,
  • ANSI string - Latin,
  • ANSI or Unicode string,
  • Unicode string.
To learn more about secret strings and how to use the vault, see Secret string vault.
New in version 2025
AndroidAndroid Widget Secret strings are not available for this parameter in Android/Android widget applications.
<WLanguage procedure>: Procedure name
Name of the WLanguage procedure ("callback") called when hashing. This procedure is used to get the hash result. For more details, see Procedure used by HashCheckString.
WindowsLinuxiPhone/iPadIOS WidgetMac Catalyst

Checking a hash obtained using a key derivation function that takes a salt as parameter (PBKDF2) Hide the details

HashCheckString(<Type of algorithm> , <String> , <Hash> , <Salt> , <Iteration> , <Length>)
<Type of algorithm>: Integer constant
Specifies the type of pseudo-random algorithm used by PBKDF2 to hash <String>:
MD4 familyHA_PBKDF2_HMAC_MD4
MD5 familyHA_PBKDF2_HMAC_MD5_128
Please note: this type of algorithm is currently deprecated.
RIPEMD family
  • HA_PBKDF2_HMAC_RIPEMD_128
  • HA_PBKDF2_HMAC_RIPEMD_160
SHA family
  • 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
SHA-3 family
  • HA_PBKDF2_HMAC_SHA3_224
  • HA_PBKDF2_HMAC_SHA3_256
  • HA_PBKDF2_HMAC_SHA3_384
  • HA_PBKDF2_HMAC_SHA3_512
TIGER family
  • HA_PBKDF2_HMAC_TIGER_128
  • HA_PBKDF2_HMAC_TIGER_160
  • HA_PBKDF2_HMAC_TIGER_192
WHIRLPOOL familyHA_PBKDF2_HMAC_WHIRLPOOL
  • MD4 / MD5 / SHA / RIPEMD algorithms: classic cryptographic hash functions.
  • TIGER / WHIRLPOOL algorithms: hash functions with very good cryptographic properties, optimized for 64-bit (but can be used in 32-bit).
<String>: Character string
String for which the Hash will be checked.
<Hash>: Character string
Hash of string to check. This Hash must be the result of HashString previously called for <String> using the <Type of algorithm>.
<Salt>: Character string
Cryptographic salt identical to the one used to calculate the Hash.
<Iteration>: Integer
Number of iterations of the algorithm. This parameter must be identical to the one used to calculate the Hash.
<Length>: Integer
Length of the derived key. This parameter must be identical to the one used to calculate the Hash.
Remarks
JavaPHP

Availability of algorithms

PHP Algorithms are available depending on the PHP server configuration ('mhash' extension, PHP 5 with native hash function, etc).
Java Only the following algorithms are supported:
  • 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

HashCheckString and UNICODE

Cross-platform development To use string hashes across platforms (e.g. a hash generated on iOS and verified on Android or Windows), do not use Unicode strings. Indeed, the Unicode strings do not have the same format according to the platforms. In this case, we advise you to use strings in ANSI or UTF 8 format (and to convert the Unicode strings if necessary).
Business / UI classification: Business Logic
Component: wd300com.dll
Minimum version required
  • Version 11
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 05/16/2025

Send a report | Local help