Вопрос

У меня довольно странная проблема. Для распределенного хэш-таблица мне нужно иметь возможность выполнять несколько простых математических операций на хэши MD5. К ним относятся сумма (числовая сумма, представленная хэш) и модуль. Теперь мне интересно, какой лучший способ реализовать эти операции. Я использую Hashlib для расчета хэшей, но поскольку хэши, которые я получаю, то строка, как я могу с ними рассчитать?

Это было полезно?

Решение

Вы можете использовать hexdigest() Способ получения шестнадцатеричных цифр, а затем преобразовать их в номер:

>>> h = hashlib.md5('data')
>>> int(h.hexdigest(), 16)
188041611063492600696317361555123480284L

Если у вас уже есть выход digest(), вы можете преобразовать его в шестнадцатеричные цифры:

>>> hexDig = ''.join('%02x' % ord(x) for x in h.digest())
>>> int(hexDig, 16)
188041611063492600696317361555123480284L

Редактировать:

Для второго случая на самом деле легче преобразовать использование .encode('hex') или binascii.hexlify:

>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top