13
我有一個很奇怪的問題。對於分佈式散列表,我需要能夠對MD5散列做一些簡單的數學運算。這些包括一個總和(由散列表示的數字總和)和一個模運算。現在我想知道實施這些操作的最佳方式是什麼。 我使用hashlib來計算哈希值,但是因爲我得到的哈希值是字符串,我該如何計算它們?Python哈希操作
我有一個很奇怪的問題。對於分佈式散列表,我需要能夠對MD5散列做一些簡單的數學運算。這些包括一個總和(由散列表示的數字總和)和一個模運算。現在我想知道實施這些操作的最佳方式是什麼。 我使用hashlib來計算哈希值,但是因爲我得到的哈希值是字符串,我該如何計算它們?Python哈希操作
可以使用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
編輯:
對於第二種情況,它的實際ly更容易轉換使用.encode('hex')
或binascii.hexlify
:
>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L