سؤال

لدي مشكلة غريبة إلى حد ما. بالنسبة لجدول التجزئة الموزع ، أحتاج إلى أن أكون قادرًا على القيام ببعض عمليات الرياضيات البسيطة على تجزئة 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top