python中的一对一哈希

python中的一对一哈希,python,hash,Python,Hash,如果我有两个值相同的字符串,是否可以保证hash(s1)==hash(s2)而不使用hashlib?另外,散列中位数的上限是多少? 是否有可反转的哈希替代方案?我理解散列函数不应该这样使用。但是从字符串到可以反转的短十六进制字符串的1-1映射,保证每个字符串都不同吗 这是否有效: import zlib # compress zlib.compress("foo") zlib.decompress(zlib.compress("foo")) == "foo" # always true? 谢

如果我有两个值相同的字符串,是否可以保证
hash(s1)==hash(s2)
而不使用
hashlib
?另外,散列中位数的上限是多少? 是否有可反转的
哈希
替代方案?我理解散列函数不应该这样使用。但是从字符串到可以反转的短十六进制字符串的1-1映射,保证每个字符串都不同吗

这是否有效:

import zlib
# compress
zlib.compress("foo")
zlib.decompress(zlib.compress("foo")) == "foo"  # always true?
谢谢。

是的

>>>help(hash)
    Help on built-in function hash in module builtins:

    hash(...)
        hash(object) -> integer

        Return a hash value for the object.  Two objects with the same value have
        the same hash value.  The reverse is not necessarily true, but likely.

如果一个函数为同一个输入提供两个不同的输出,那么它通常不能正确地称为散列,真的。是的!哈什还能是什么。这就是散列的要点。2.猜测一下,任何符合
int
,因此
[-sys.maxint-1,sys.maxint]
使用
zlib
的方法都会起作用,是的。但是请记住,对于这么短的输入
len(zlib.compress('foo'))==11
。不是很大的节省!;)。数据压缩利用了数据中的冗余,对于非常短的数据,冗余不会很多。那么,对于100-300个字符的短字符串,获得短(例如少于50个字符)编码的最佳方法是什么?哈夫曼?我怎么才能找回原来的绳子?i、 e.
f(hash(“foo”)==“foo”
你没有。这就是散列函数的用途。我正在寻找一个可逆的散列函数,它应该让它更清晰。从字符串到可反转的短十六进制字符串的简单短映射,以便具有相同值的两个字符串具有相同的哈希value@user248237
hash()返回的值取决于平台,这意味着对于特定字符串,两个系统可能具有不同的hash()值,所以没有办法恢复原始字符串。