A library containing the most commonly used non-cryptographic hashing functions such as MurmurHash3, CRC32 and FNV1a. All functions Hash data of type ANY.
Signature:
FUNCTION F_CRC32 : DWORD
VAR_INPUT
Data : ANY;
END_VAR
Declarations:
sData : STRING := '123456789';
nData : DINT := 123456789;
nSTRING_Hash,
nDINT_Hash : DWORD;
Implementation:
nSTRING_Hash := F_CRC32(sData); // Output: 3421780262
nDINT_Hash := F_CRC32(nData); // Output: 417295518
Source: https://lxp32.github.io/docs/a-simple-example-crc32-calculation/
Signature:
FUNCTION F_DJB2 : DWORD
VAR_INPUT
Data : ANY;
END_VAR
Declarations:
sData : STRING := '123456789';
nData : DINT := 123456789;
nSTRING_Hash,
nDINT_Hash : DWORD;
Implementation:
nSTRING_Hash := F_DJB2(sData); // Output: 902675330
nDINT_Hash := F_DJB2(nData); // Output: 2087454537
Source: http://www.cse.yorku.ca/~oz/hash.html
Signature:
FUNCTION F_FNV1a : DWORD
VAR_INPUT
Data : ANY;
END_VAR
Declarations:
sData : STRING := '123456789';
nData : DINT := 123456789;
nSTRING_Hash,
nDINT_Hash : DWORD;
Implementation:
nSTRING_Hash := F_FNV1a(sData); // Output: 3146166556
nDINT_Hash := F_FNV1a(nData); // Output: 1186151337
Source: http://www.isthe.com/chongo/tech/comp/fnv/
Signature:
FUNCTION F_Lose_Lose : DWORD
VAR_INPUT
Data : ANY;
END_VAR
Declarations:
sData : STRING := '123456789';
nData : DINT := 123456789;
nSTRING_Hash,
nDINT_Hash : DWORD;
Implementation:
nSTRING_Hash := F_Lose_Lose(sData); // Output: 477
nDINT_Hash := F_Lose_Lose(nData); // Output: 324
Source: http://www.cse.yorku.ca/~oz/hash.html
Signature:
FUNCTION F_MurMurHash3 : DWORD
VAR_INPUT
Data : ANY;
END_VAR
Declarations:
sData : STRING := '123456789';
nData : DINT := 123456789;
nSTRING_Hash,
nDINT_Hash : DWORD;
Implementation:
nSTRING_Hash := F_MurMurHash3(sData); // Output: 3036607362
nDINT_Hash := F_MurMurHash3(nData); // Output: 3206620847
Source: https://en.wikipedia.org/wiki/MurmurHash
Signature:
FUNCTION F_SDBM : DWORD
VAR_INPUT
Data : ANY;
END_VAR
Declarations:
sData : STRING := '123456789';
nData : DINT := 123456789;
nSTRING_Hash,
nDINT_Hash : DWORD;
Implementation:
nSTRING_Hash := F_SDBM(sData); // Output: 1755344949
nDINT_Hash := F_SDBM(nData); // Output: 912040036
Source: http://www.cse.yorku.ca/~oz/hash.html
Description:
64-bit hash code generated using MurmurHash3 and FNV1a hashing algorithms. Hash code is different for each runtime to mitigate hash flooding.
Signature:
FUNCTION F_Hash_Code : LWORD
VAR_INPUT
Data : ANY;
END_VAR
Declarations:
sData : STRING := '123456789';
nData : DINT := 123456789;
nSTRING_Hash,
nDINT_Hash : LWORD;
Implementation:
nSTRING_Hash := F_Hash_Code(sData); // Output: See description
nDINT_Hash := F_Hash_Code(nData); // Output: See description
TBD