在Python中通过哈希值识别5元组流

时间:2013-06-20 10:36:11

标签: python hash

我通过 5元组(src IP,dst端口,运动,dport,传输协议号码)识别互联网流量,我想将此转为5将元组转换为更紧凑的字母数字ID ,供我的脚本内部使用。

我在Python中有哪些选择?

我读到内置函数hash一致的操作系统,所以我更喜欢别的。

我只需要处理不超过几百个不同的5元组。

3 个答案:

答案 0 :(得分:2)

只需选择自己的哈希函数:

import hashlib
hash = hashlib.md5()
t = (1, 2, 3, 4, 5) # whatever
t_as_string = str(t)
hash.update(t_as_string)
print hash.hexdigest()

您可以使用hashlib中的任何功能。由于这不是一个安全问题,因此无关紧要......

但是:想打赌,比较元组会更快/更有效吗?

答案 1 :(得分:2)

以下Python Hash函数由Ewen Cheslack-Postava在几个OS和CPU中保持一致: https://pypi.python.org/pypi/pyhashxx/

答案 2 :(得分:1)

你是否担心跨越OS的冲突?那是你的问题吗?

但是因为你只处理了几百个5元组,所以你不能应用某种哈希共谋解决技术,如链接或开放寻址等。

如果我没有遗漏任何其他内容,我相信上述方法比自己设计新的哈希算法更好。