在Google安全浏览V2实现中的哈希计算

时间:2013-04-19 19:15:46

标签: api sha256 safe-browsing

我正在尝试测试我的google安全浏览api版本2的实现。 为了测试我的代码的一部分,该代码发送给定前缀的完整哈希请求,我捕获了一段短暂的流量会话,我访问了一个已知的当前黑名单网址“utfvq.portrelay.com”,并且firefox发送了一个请求谷歌进行完整哈希和谷歌回应了一个哈希列表。

firefox发送的前缀是(十六进制编码):2e2e372e,2e26382e,2e2e382e,6545382e

收到的4个匹配的完整哈希是:

2e26382e2e2e436d2e2e2e2e322e3b2e2e2e2e2e4a2e2e2e7b2e2e2e6a492e2e
6545382e2e2a5b792e652e2e2e2e2e2e2e2e70442e7d2e2e2e222e2e502e2e2e
2e2e382e6c36252e2e522e2e592e2e2e2e2e3f592e2e2e782e2e572e4e2e2e2e
2e2e372e2e2e2e2e55682e542e51622e552e2e68352e2e2e2e2e2e2e2ed2755

在我的实现中,我生成的哈希前缀似乎与firefox发送的哈希前缀不匹配。因此,我没有在我的客户端获得任何完整的哈希匹配。

我已经密切关注API的谷歌描述,并确保正确实现了以前的步骤,如url规范化。

我得到的url,SHA256哈希

utfvq.portrelay.com/:5c2383012676e63656c13167e1cc4f55309c4e1b73c22556e36ec1487e8b8697

portrelay.com/:842638fe92ee436da7808d0232d03bcaa0f5c8b64ad5eee97bf28dbb6a49f8ae

有人可以指出散列不匹配的原因。我尽我所知遵循API指南。是否有一些我遗漏的实施细节?

1 个答案:

答案 0 :(得分:0)

我发现这是一个基本的字符编码错误。

我在代码中计算的SHA哈希是正确的。我看待firefox发送的哈希的方式是错误的。我从文本文件中复制了字符,其中存储了任何不在常规ascii范围内的字节作为点(。)。然后我将这些转换为十六进制值,这是一种“有损”编码。这就是为什么哈希中有这么多“2e”十六进制字符的原因。现在我只使用原始字节,它们匹配。