【发布时间】:2012-06-24 18:18:39
【问题描述】:
我的目标是使用 MD5 结果的结果来索引哈希表。我想对其执行模运算以在表中找到适当的插槽。我尝试将其转换为无符号长长类型。当我打印结果时,对于相同的 MD5 哈希,我每次都会得到一个不同的数字。 MD5 哈希最初是一个无符号字符 *。谁能告诉我我做错了什么?
这是我的功能:
int get_fp_slot(unsigned char * fingerprint, int size)
{
return (unsigned long long)fingerprint % size;
}
【问题讨论】:
-
你正在尝试投射一个指针,这并没有多大意义。
-
什么是“指纹”?指向哈希值的字符串表示形式的指针?我建议您构建哈希值的字符串表示的整数表示,然后重试。在上面的代码中,您使用的是指针,而不是哈希的实际值。不完全是你想要达到的目标。另外,请注意冲突的可能性,因为您尝试在此处压缩密钥。
-
您应该考虑使用除 md5 之外的散列算法来降低冲突的可能性。
-
@C0deH4cker - 但是 MD5 是一种散列算法!
-
我说除了 md5。意思是输出较小,因此您不需要压缩它。