Я использовал хеш-функцию для генерации некоторого значения ключа раздела в Python 2. Я зависел от встроенной хеш-функции. Я не знал, что реализация не гарантируется, что она будет одинаковой в разных версиях, и я должен был использовать библиотеку Python hashlib с указанным алгоритмом, таким как md5 или sha256. алгоритм для продолжения работы, мне интересно, есть ли Python-код, эквивалентный хэш-функции, или использование библиотеки hashlib для генерации результата.
Простое использование алгоритмов hashlib, похоже, не использует один и тот же ответ. Python 3 использует другой алгоритм sipHash и random seed для хеширования строк.
- обновление Я попытался запустить этот код в python 2но это не сработало, так как генерирует другой результат.
def c_mul(a, b):
return eval(hex((long(a) * b) & 0xFFFFFFFFL)[:-1])
def hash2(self):
if not self:
return 0 # empty
value = ord(self[0]) << 7
for char in self:
value = c_mul(1000003, value) ^ ord(char)
value = value ^ len(self)
if value == -1:
value = -2
return value
Мне нужен код для запуска в Python 3, хотя
- обновите модификацию вышеупомянутого алгоритма, учитывая, что 64-битная и специфичная для Python3 реализация работали. Решение в ответе.