У меня есть довольно странная проблема. Для Распределенной Хеш-таблицы я должен смочь сделать некоторые простые математические операции на хешах 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
Edit :
Во втором случае на самом деле проще преобразовать, используя .encode ('hex')
или binascii.hexlify
:
>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L