需要一个哈希函数来从ipv6 16字节地址和TCP 2字节端口号创建32位值

Mus*_*hin 7 c c++ networking network-programming ipv6

我想创建一个32位的哈希值.我有16字节的源和目标ipv6地址和2字节的源和目标端口号.

32位输出=(Src IP,Dst Ip,Src端口,目标端口)

如果散列函数沿32位空间很好地分配实体会更好.我想将结果用作索引.

重考

9da*_*dan 5

另外,可能是有用的参考:

通用散列函数算法

CityHash by Google

注意,很难建立无碰撞保证的散列函数(在相同的散列码中没有不同的输入结果).这个问题有很多解决方案,最简单的一个是开放寻址.

打开寻址

  • 谢谢你,通用哈希函数算法似乎是要走的路.我将试验他们的算法. (3认同)

Chr*_*oph 1

有关哈希函数和几种著名算法的一些一般信息,请参阅Eternally Conuzzled ;我可能会选择 FNV 或 Jenkins 的一次一次哈希。