这是一个基于FNV-1A(Fowler-Noll-Bagley)的哈希函数,适用于字符串哈希计算,效率非常高。在很多场景会用到,例如:主动防御软件在对白名单路径文件的放行检查等。
LONG64 StrHash(_In_ const char* stext)
{
// For 64 bit machines:
LONG64 fnv_prime = 1099511628211ULL;
LONG64 fnv_offset_basis = 14695981039346656037ULL;
LONG64 ulHash = fnv_offset_basis;
size_t ilen = strlen(stext);
if (ilen)
{
for (int i = 0; i < ilen; i++)
{
char c = (char)stext[i];
ulHash ^= c;
ulHash *= fnv_prime;
}
}
return ulHash;
}