質問

Google Safe Browsing API からのデータを確認するため、更新ごとにメッセージ認証コード(MAC)を計算できます。これを行うための手順は(Googleから)です:

  

MACはMD5ダイジェストから計算されます   次の情報を介して:   client_key | separator | table   data | separator | client_key。の   separatorはstring:coolgoogです:-   これはコロンで、その後に「coolgoog」が続きます。   コロンが続きます。結果として   128ビットMD5ダイジェストは、websafe base-64です   エンコード。

チェックするデータの例もあります:

client key: "8eirwN1kTwCzgWA2HxTaRQ=="

response:

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

一致するものを取得できません。間違っている箇所を指摘するか、これを行うために必要なPythonコードを数行書いてください!

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 == \ n」!=「dRalfTU + bXwUhlk0NCGJtQ ==」

役に立ちましたか?

解決

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

他のヒント

Andersの答えは必要な情報を提供しますが、それほど明確ではありません。クライアントキーは、結合する前にデコードする必要があります。 (上記の例では、最終的なテーブルデータの最後に改行もありません。)

したがって、動作するコードは次のとおりです。

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