18

かなり奇妙な問題があります。分散ハッシュ テーブルの場合、MD5 ハッシュに対して簡単な数学演算を実行できる必要があります。これらには、合計 (ハッシュで表される数値の合計) とモジュロ演算が含まれます。今、これらの操作を実装する最良の方法は何だろうと思っています。hashlib を使用してハッシュを計算していますが、取得したハッシュは文字列であるため、どのように計算すればよいでしょうか?

4

1 に答える 1

35

このhexdigest()メソッドを使用して 16 進数を取得し、それらを数値に変換できます。

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

の出力が既にある場合はdigest()、それを 16 進数に変換できます。

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

編集

2 番目のケースでは、実際には.encode('hex')orを使用して変換する方が簡単binascii.hexlifyです。

>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
于 2010-04-24T00:52:48.797 に答える