【发布时间】:2014-04-10 00:54:14
【问题描述】:
u_int
mkhash (u_int src, u_short sport, u_int dest, u_short dport)
{
u_int res = 0;
int i;
u_char data[12];
u_int *stupid_strict_aliasing_warnings=(u_int*)data;
*stupid_strict_aliasing_warnings = src;
*(u_int *) (data + 4) = dest;
*(u_short *) (data + 8) = sport;
*(u_short *) (data + 10) = dport;
for (i = 0; i < 12; i++)
res = ( (res << 8) + (data[perm[i]] ^ xor[i])) % 0xff100f;
return res;
}
这是上面的libnids哈希算法。当表大小为65536时,两个不同的tuple4能否得到相同的hash值?
【问题讨论】:
-
输入大小大于哈希值,所以是的,通过pidgeonhole principle你的哈希函数不能是单射的
标签: algorithm hash hashmap libnids