要验证来自 Google安全浏览API 的数据,您可以为每次更新计算消息验证代码(MAC)。执行此操作的说明(来自Google)是:

  

MAC是根据MD5摘要计算的   通过以下信息:   client_key |分离器|表   数据|分离器| client_key。该   separator是字符串:coolgoog: -   这是一个冒号,然后是“coolgoog”。   然后是冒号。所结果的   128位MD5摘要是websafe base-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.

我无法得到一场比赛。请指出我出错的地方,或者只写几行必要的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