在Win32中任何易于使用的散列函数来散列ASCIIstring?

在Win32中任何易于使用的散列函数来散列ASCIIstring?

我正在寻找一个简单的哈希函数在Windows(最好kernel32.dll或一些其他广泛使用的DLL)来散列ASCIIstring,比如DWORD的?

该函数应该从C / C ++或x86中调用。

我一直在谷歌search,但似乎没有任何function符合我的需求?

任何build议?

下面是示例程序,演示在Shlwapi.dll使用HashData函数。

这个功能非常简单灵活(无论是在输入和输出)。

它基本上执行一个消息摘要。

 #include <stdio.h> #include <Shlwapi.h> using namespace std; #define HASH_LEN 32 int main(int argc, char* argv[]) { const char* data = "foobarbaz"; unsigned char hash[HASH_LEN] = {0}; HashData((LPBYTE)data, strlen(data),(LPBYTE)hash, HASH_LEN); printf("Hash: "); for (int i = 0; i < HASH_LEN; i++) { printf("%d ", hash[i]); } printf("\n"); return 0; } 

您可以在OleAut32.dll找到OleAut32.dll

 #define _WIN32_WINNT 0x0500 #include <windows.h> #include <stdio.h> int main( int argc, char **argv ) { if (argc < 2) return 1; printf( "%s = %08x\r\n" , argv[1] , LHashValOfNameSys( 0, 0, (const OLECHAR *) argv[1] ) ); // Done return 0; }