0

我正在尝试测试我的 google 安全浏览 api 版本 2 的实现。为了测试我的代码的一部分,该代码发送给定前缀的完整哈希请求,我捕获了一小段流量,我访问了一个已知的当前列入黑名单的 url “ utfvq.portrelay.com”和 Firefox 向 google 发送了完整哈希的请求,谷歌以哈希列表作为响应。

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

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

2e26382e2e2e436d2e2e2e2e322e3b2e2e2e2e2e4a2e2e2e7b2e2e2e6a492e2e
6545382e2e2a5b792e652e2e2e2e2e2e2e2e70442e7d2e2e2e222e2e502e2e2e
2e2e382e6c36252e2e522e2e592e2e2e2e2e3f592e2e2e782e2e572e4e2e2e2e
2e2e372e2e2e2e2e55682e542e51622e552e2e68352e2e2e2e2e2e2e2ed2755

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

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

我得到的 url,SHA256 哈希是

utfvq.portrelay.com/:5c2383012676e63656c13167e1cc4f55309c4e1b73c22556e36ec1487e8b8697

portrelay.com/:842638fe92ee436da7808d0232d03bcaa0f5c8b64ad5eee97bf28dbb6a49f8ae

有人可以指出为什么哈希不匹配。据我所知,我已遵循 API 指南。我缺少一些实现细节吗?

4

1 回答 1

0

结果证明这是我的基本字符编码错误。

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

于 2013-04-29T18:11:09.900 回答