【发布时间】:2017-11-09 14:08:57
【问题描述】:
当我在 windows 和 linux 中散列给定字符串时,我试图找到一种方法来获得相同的结果。 但例如,如果我运行以下代码:
hash<string> h;
cout << h("hello");
它将在 windows 中返回 3305111549,在 linux 中返回 2762169579135187400。
如果不可能在这两个平台上获得相同的返回值,是否还有其他体面的哈希函数可以在两个系统上返回相同的值?
【问题讨论】:
-
"..有没有办法在 linux 和 windows 中获得相同的值'" - 是的,实现你自己的哈希函数。但这又有什么意义呢?如果你的哈希值在程序运行之间没有变化,你就提供了一个攻击面。
-
哈希值可能会在程序执行之间发生变化。所以它在执行之间不可移植。
-
如果你希望性能相同,为什么不写自己的哈希类?