Frage

Um die Daten zu überprüfen, aus dem kommenden Google Safe Browsing API können Sie einen Message Authentication Code (MAC) für jedes Update berechnen. Die Anweisungen, dies zu tun (von Google) ist:

  

Der MAC wird von einem MD5 Digest berechnet   über die folgenden Informationen:   client_key | Separator | Tisch   Daten | Separator | client_key. Das   Abscheider ist der String: coolgoog: -   das ist ein Doppelpunkt, gefolgt von „coolgoog“   mit einem Doppelpunkt. die daraus resultierende   128-Bit-MD5 Digest ist websafe Base-64   codiert wird.

Es gibt auch Beispieldaten gegen überprüfen:

client key: "8eirwN1kTwCzgWA2HxTaRQ=="

Antwort:

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

Ich bin nicht in der Lage ein Spiel zu bekommen. Bitte entweder zeigen, wo ich falsch bin, oder schreiben Sie einfach den paar Zeilen Python-Code notwendig, dies zu tun!

FWIW, ich voraussichtlich in der Lage sein, so etwas zu tun:

>>> 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'

Aber wie Sie sehen können, 'qfb50mxpHrS82yTofPkcEg == \ n'! = 'DRalfTU + bXwUhlk0NCGJtQ =='.

War es hilfreich?

Lösung

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

Andere Tipps

Anders' Antwort gibt die notwendigen Informationen, ist aber nicht so klar: der Client-Schlüssel muss entschlüsselt werden, bevor sie kombiniert wird. (Das obige Beispiel wird auch eine neue Zeile am Ende der letzten Tabellendaten fehlt).

So ist der Arbeitscode lautet:

>>> 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'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top