// Calculate the Hash of values for two edit controls Hash1 is Buffer = HashString(HA_MD5_128, EDT_Edit1) Hash2 is Buffer = HashString(HA_MD5_128, EDT_Edit2) // Compare the two Hash IF Hash1 = Hash2 THEN Info("The two strings are identical.")

TIGER/WHIRLPOOL algorithms: hash functions with high cryptographic properties optimized for the 64-bit mode (but can also be used in 32-bit mode).

CKSUM algorithms: hash functions with no cryptographic property, should be used to perform low-level checks or with hashing tables.

Versions 22 and later DJB2 algorithm (Bernstein): hash functions reserved to strings and with no cryptographic property, should be used to perform low-level checks or with hashing tables. Few risks to get an identical hash.

New in version 22 DJB2 algorithm (Bernstein): hash functions reserved to strings and with no cryptographic property, should be used to perform low-level checks or with hashing tables. Few risks to get an identical hash.

DJB2 algorithm (Bernstein): hash functions reserved to strings and with no cryptographic property, should be used to perform low-level checks or with hashing tables. Few risks to get an identical hash.

Versions 24 and later MURMUR algorithm: very fast hash functions with no cryptographic properties. This algorithm is used by the "bloom filter" of bitcoin wallets.

New in version 24 MURMUR algorithm: very fast hash functions with no cryptographic properties. This algorithm is used by the "bloom filter" of bitcoin wallets.

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 on which the calculation will be performed. This parameter can contain binary characters.

HashString(<Type of algorithm> , <String> , <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 on which the calculation will be performed. This parameter can contain binary characters.

<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 HashString.

HashString(<Type of algorithm> , <String> , <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 on which the calculation will be performed. This parameter can contain binary characters.

<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 HashString.

HashString(<Type of algorithm> , <String> , <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 on which the calculation will be performed. This parameter can contain binary characters.

<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 HashString.

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

<Result> = HashString(<Type of algorithm> , <String> , <Secret key>)

<Result>: Buffer

Result of <String> hashing with the <Type of algorithm> algorithm. The length of this string depends on the algorithm used. For example, if the HA_HMAC_SHA_256 constant is used, the result will contain 32 bytes.

Caution: this result may contain non-displayable characters.

<Type of algorithm>: Integer constant

Indicates the type of algorithm (HMAC or MURMUR) used to hash the <String>:

Versions 25 and later MD4 family

New in version 25 MD4 family

MD4 family

Versions 25 and later HA_HMAC_MD4

Not available.

New in version 25 HA_HMAC_MD4

Not available.

HA_HMAC_MD4

Not available.

Versions 26 and later

This constant is now available.

New in version 26

This constant is now available.

This constant is now available.

MD5 family

HA_HMAC_MD5_128

Caution: this type of algorithm is currently deprecated.

Versions 24 and later MURMUR family

New in version 24 MURMUR family

MURMUR family

Versions 24 and later HA_MURMUR_1: Murmur algorithm version 1: 32-bit hash result

New in version 24 HA_MURMUR_1: Murmur algorithm version 1: 32-bit hash result

HA_MURMUR_1: Murmur algorithm version 1: 32-bit hash result

Versions 24 and later HA_MURMUR_2: Murmur algorithm version 2: 32-bit hash result

New in version 24 HA_MURMUR_2: Murmur algorithm version 2: 32-bit hash result

HA_MURMUR_2: Murmur algorithm version 2: 32-bit hash result

Versions 24 and later HA_MURMUR_2_64A: Murmur algorithm version 2: 64-bit hash result optimized for 64-bit processors

New in version 24 HA_MURMUR_2_64A: Murmur algorithm version 2: 64-bit hash result optimized for 64-bit processors

HA_MURMUR_2_64A: Murmur algorithm version 2: 64-bit hash result optimized for 64-bit processors

Versions 24 and later HA_MURMUR_2_64B: Murmur algorithm version 2: 64-bit hash result optimized for 32-bit processors

New in version 24 HA_MURMUR_2_64B: Murmur algorithm version 2: 64-bit hash result optimized for 32-bit processors

HA_MURMUR_2_64B: Murmur algorithm version 2: 64-bit hash result optimized for 32-bit processors

Versions 24 and later HA_MURMUR_2_A: Incremental Murmur algorithm version 2: 32-bit hash result

New in version 24 HA_MURMUR_2_A: Incremental Murmur algorithm version 2: 32-bit hash result

HA_MURMUR_2_A: Incremental Murmur algorithm version 2: 32-bit hash result

Versions 24 and later HA_MURMUR_2_BIG_ENDIAN: Murmur algorithm version 2 for big-endian machine: 32-bit hash result

New in version 24 HA_MURMUR_2_BIG_ENDIAN: Murmur algorithm version 2 for big-endian machine: 32-bit hash result

HA_MURMUR_2_BIG_ENDIAN: Murmur algorithm version 2 for big-endian machine: 32-bit hash result

Versions 24 and later HA_MURMUR_2_ALIGNE: Murmur algorithm version 2 for aligned machine: 32-bit hash result

New in version 24 HA_MURMUR_2_ALIGNE: Murmur algorithm version 2 for aligned machine: 32-bit hash result

HA_MURMUR_2_ALIGNE: Murmur algorithm version 2 for aligned machine: 32-bit hash result

Versions 24 and later HA_MURMUR_3_32: Murmur algorithm version 3: 32-bit hash result

New in version 24 HA_MURMUR_3_32: Murmur algorithm version 3: 32-bit hash result

HA_MURMUR_3_32: Murmur algorithm version 3: 32-bit hash result

Versions 24 and later HA_MURMUR_3_128_X86: Murmur algorithm version 3: 128-bit hash result optimized for 32-bit processors

New in version 24 HA_MURMUR_3_128_X86: Murmur algorithm version 3: 128-bit hash result optimized for 32-bit processors

HA_MURMUR_3_128_X86: Murmur algorithm version 3: 128-bit hash result optimized for 32-bit processors

Versions 24 and later HA_MURMUR_3_128_X64: Murmur algorithm version 3: 128-bit hash result optimized for 64-bit processors

New in version 24 HA_MURMUR_3_128_X64: Murmur algorithm version 3: 128-bit hash result optimized for 64-bit processors

HA_MURMUR_3_128_X64: Murmur algorithm version 3: 128-bit hash result optimized for 64-bit processors

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 on which the calculation will be performed. This parameter can contain binary characters.

<Secret key>: Character string

Authentication key of message.

<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 HashString.

New in version 25

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

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 on which the calculation will be performed. This parameter can contain binary characters.

<Secret key>: Character string

Authentication key of message.

<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 HashString.

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

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 on which the calculation will be performed. This parameter can contain binary characters.

<Secret key>: Character string

Authentication key of message.

<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 HashString.

Versions 27 and later

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

TIGER/WHIRLPOOL algorithms: hash functions with high cryptographic properties optimized for the 64-bit mode (but can also be used in 32-bit mode).

<String>: Character string

String on which the calculation will be performed. This parameter can contain binary characters.

<Salt>: Character string

Cryptographic salt used. String (usually random) added to the original string to make it more complex. For example, it makes it possible for two users to use the same password.

<Iteration>: Integer

Number of iterations of the algorithm (10000 by default). This number depends on the power of the computing machine and the complexity of the hash. A minimum of 1000 iterations is generally recommended.

<Length>: Integer

Length of the derived key. By default, corresponds to the size of the key generated by the pseudo-random function. This length is technically unbounded but due to the algorithm, it is limited to (2^32 - 1) * (output length of the algorithm used by PBKDF2).

New in version 27

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

TIGER/WHIRLPOOL algorithms: hash functions with high cryptographic properties optimized for the 64-bit mode (but can also be used in 32-bit mode).

<String>: Character string

String on which the calculation will be performed. This parameter can contain binary characters.

<Salt>: Character string

Cryptographic salt used. String (usually random) added to the original string to make it more complex. For example, it makes it possible for two users to use the same password.

<Iteration>: Integer

Number of iterations of the algorithm (10000 by default). This number depends on the power of the computing machine and the complexity of the hash. A minimum of 1000 iterations is generally recommended.

<Length>: Integer

Length of the derived key. By default, corresponds to the size of the key generated by the pseudo-random function. This length is technically unbounded but due to the algorithm, it is limited to (2^32 - 1) * (output length of the algorithm used by PBKDF2).

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

TIGER/WHIRLPOOL algorithms: hash functions with high cryptographic properties optimized for the 64-bit mode (but can also be used in 32-bit mode).

<String>: Character string

String on which the calculation will be performed. This parameter can contain binary characters.

<Salt>: Character string

Cryptographic salt used. String (usually random) added to the original string to make it more complex. For example, it makes it possible for two users to use the same password.

<Iteration>: Integer

Number of iterations of the algorithm (10000 by default). This number depends on the power of the computing machine and the complexity of the hash. A minimum of 1000 iterations is generally recommended.

<Length>: Integer

Length of the derived key. By default, corresponds to the size of the key generated by the pseudo-random function. This length is technically unbounded but due to the algorithm, it is limited to (2^32 - 1) * (output length of the algorithm used by PBKDF2).

Remarks

Notes

Two identical character strings will have, for the same type of algorithm, two identical Hashes.

The result of the Hash may contain non-displayable characters. These characters will not be visible when using Info or Trace for example.

HashString and UNICODE

Caution: The Hash functions operate on the bytes found in the character strings. For the same type of algorithm, the result will differ in UNICODE and in ANSI.

Cross-platform development: To use Hash of strings between several platforms (a hash generated in iOS and checked in Android or Windows for example), no Unicode string must be used. 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).

Availability of algorithms

Algorithms are available depending on the PHP server configuration ('mhash' extension, PHP 5 with native hash function, etc).

[ + ] Using the hashing functions. The HashFile and HashString functions are used to calculate a Hash key for a string or for a file. This Hash key is used to: - Check whether the file is consistent after a transfer for example - Find file duplicates - ...