Logged In: YES
user_id=1033539
Here is the Python code for the hash function
that I am describing:
def hx(x):
if isinstance(x, tuple):
result = 0x345678L
for n, elt in enumerate(x):
y = (tbl[n & 0x3f] + (n >> 6)) & 0xffffffffL
result = (y * (result ^ hx(elt))) & 0xffffffffL
result ^= len(x)
else:
result = hash(x)
return result
# 64 constants taken from MD5
# (see Modules/md5c.c in the Python sources)
tbl = (
-0x28955b88, -0x173848aa, 0x242070db, -0x3e423112,
-0xa83f051, 0x4787c62a, -0x57cfb9ed, -0x2b96aff,
0x698098d8, -0x74bb0851, -0xa44f, -0x76a32842,
0x6b901122, -0x2678e6d, -0x5986bc72, 0x49b40821,
-0x9e1da9e, -0x3fbf4cc0, 0x265e5a51, -0x16493856,
-0x29d0efa3, 0x2441453, -0x275e197f, -0x182c0438,
0x21e1cde6, -0x3cc8f82a, -0xb2af279, 0x455a14ed,
-0x561c16fb, -0x3105c08, 0x676f02d9, -0x72d5b376,
-0x5c6be, -0x788e097f, 0x6d9d6122, -0x21ac7f4,
-0x5b4115bc, 0x4bdecfa9, -0x944b4a0, -0x41404390,
0x289b7ec6, -0x155ed806, -0x2b10cf7b, 0x4881d05,
-0x262b2fc7, -0x1924661b, 0x1fa27cf8, -0x3b53a99b,
-0xbd6ddbc, 0x432aff97, -0x546bdc59, -0x36c5fc7,
0x655b59c3, -0x70f3336e, -0x100b83, -0x7a7ba22f,
0x6fa87e4f, -0x1d31920, -0x5cfebcec, 0x4e0811a1,
-0x8ac817e, -0x42c50dcb, 0x2ad7d2bb, -0x14792c6f
)
|