كود للتحقق من التحديثات من API التصفح الآمن من Google

StackOverflow https://stackoverflow.com/questions/181994

سؤال

في أجل التحقق من البيانات القادمة من التصفح الآمن من Google API ، يمكنك حساب رسالة مصادقة قانون (MAC) لكل التحديث. تعليمات للقيام بذلك (من Google) هي:

<اقتباس فقرة>   

ويتم احتساب MAC من دايجست MD5   على المعلومات التالية:   client_key | فاصل | الجدول   البيانات | فاصل | client_key. ال   فاصل سلسلة: coolgoog: -   هذا هو القولون تليها "coolgoog"   متبوعا بنقطتين. النتيجة   128 بت MD5 هضم هو websafe قاعدة-64   المشفرة.

وهناك أيضا بيانات سبيل المثال للتحقق ضد:

client key: "8eirwN1kTwCzgWA2HxTaRQ=="

والاستجابة:

[goog-black-hash 1.180 update][mac=dRalfTU+bXwUhlk0NCGJtQ==]
+8070465bdf3b9c6ad6a89c32e8162ef1   
+86fa593a025714f89d6bc8c9c5a191ac
+bbbd7247731cbb7ec1b3a5814ed4bc9d
*Note that there are tabs at the end of each line.

وأنا غير قادر على الحصول على المباراة. الرجاء إما نشير إلى أين أنا ذاهب خاطئ، أو مجرد كتابة بضعة أسطر من التعليمات البرمجية بايثون اللازمة للقيام بذلك!

وFWIW، كنت أتوقع أن تكون قادرة على القيام بشيء من هذا القبيل:

>>> s = "+8070465bdf3b9c6ad6a89c32e8162ef1\t\n+86fa593a025714f89d6bc8c9c5a191ac\t\n+bbbd7247731cbb7ec1b3a5814ed4bc9d\t"
>>> c = "8eirwN1kTwCzgWA2HxTaRQ=="
>>> hashlib.md5("%s%s%s%s%s" % (c, ":coolgoog:", s, ":coolgoog:", c)).digest().encode("base64")
'qfb50mxpHrS82yTofPkcEg==\n'

ولكن كما ترون، 'qfb50mxpHrS82yTofPkcEg == \ ن'! = 'dRalfTU + bXwUhlk0NCGJtQ =='.

هل كانت مفيدة؟

المحلول

c="8eirwN1kTwCzgWA2HxTaRQ==".decode('base64')

نصائح أخرى

والجواب اندرس 'يعطي المعلومات اللازمة، ولكن ليست واضحة: يحتاج مفتاح العميل ليكون فك الشفرة قبل دمجها. (المثال أعلاه مفقود أيضا السطر الجديد في نهاية بيانات الجدول النهائي).

وهكذا رمز العمل هو:

>>> s = "+8070465bdf3b9c6ad6a89c32e8162ef1\t\n+86fa593a025714f89d6bc8c9c5a191ac\t\n+bbbd7247731cbb7ec1b3a5814ed4bc9d\t\n"
>>> c = "8eirwN1kTwCzgWA2HxTaRQ==".decode('base64')                            
>>> hashlib.md5("%s%s%s%s%s" % (c, ":coolgoog:", s, ":coolgoog:", c)).digest().encode("base64")
'dRalfTU+bXwUhlk0NCGJtQ==\n'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top