代码之家  ›  专栏  ›  技术社区  ›  Tony Meyer

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

  •  1
  • Tony Meyer  · 技术社区  · 16 年前

    为了验证来自 Google Safe Browsing API ,您可以为每个更新计算消息身份验证代码(MAC)。要执行此操作(来自谷歌)的说明如下:

    MAC是根据MD5摘要计算的。 以下信息: 客户机键分隔符表 数据分隔符客户机密钥。这个 分隔符是字符串: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+bxwolk0ncgjtq='.

    2 回复  |  直到 16 年前
        1
  •  1
  •   Anders Waldenborg    16 年前
    c="8eirwN1kTwCzgWA2HxTaRQ==".decode('base64')
    
        2
  •  2
  •   Tony Meyer    16 年前

    安德斯的回答给出了必要的信息,但不是很清楚:客户机密钥在组合之前需要解码。(上面的示例在最终表数据的末尾也缺少换行符)。

    所以工作代码是:

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