العمليات على تجزئة بيثون
سؤال
لدي مشكلة غريبة إلى حد ما. بالنسبة لجدول التجزئة الموزع ، أحتاج إلى أن أكون قادرًا على القيام ببعض عمليات الرياضيات البسيطة على تجزئة MD5. وتشمل هذه المبلغ (مبلغ رقمي يمثله التجزئة) وعملية Modulo. الآن أتساءل ما هي أفضل طريقة لتنفيذ هذه العمليات. أنا أستخدم 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
لا تنتمي إلى StackOverflow