验证来自Google安全浏览API的更新的代码

2024-09-27 21:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

为了验证来自Google Safe Browsing API的数据,可以为每个更新计算一个消息验证码(MAC)。执行此操作的说明(来自谷歌)是:

The MAC is computed from an MD5 Digest over the following information: client_key|separator|table data|separator|client_key. The separator is the string:coolgoog: - that is a colon followed by "coolgoog" followed by a colon. The resulting 128-bit MD5 digest is websafe base-64 encoded.

还有一些示例数据需要检查:

client key: "8eirwN1kTwCzgWA2HxTaRQ=="

回应:

^{pr2}$

我找不到匹配的。请指出我的错误所在,或者只写几行必要的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+bxwulk0ncgjtq=='。在


Tags: the数据keyclientbyismacmd5
2条回答

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'
c="8eirwN1kTwCzgWA2HxTaRQ==".decode('base64')

相关问题 更多 >

    热门问题