计算 Github API 文件 SHA

Kev*_*rke 4 github github-api github-api-v3

我有一个文件,其内容是“来自测试”- 9 个字节。文档说创建的文件的 SHA 是使用 SHA1 计算的:

计算文件的 SHA-1 哈希值并将其存储在 blob 对象中。

(来自https://developer.github.com/v3/git/blobs/

然而,当我计算“from test”的十六进制编码的 SHA1 输出时,我得到5669556d9a5c27fdd649dcaaa0873757c2aa402f.

Github API 表示 SHA 是62b551731eada762035d4665978027cd44291290- 这是返回的 ETag 以及用于检索文件的 API 响应中“sha”的值。此外,当我使用“from test”作为值和566955...sha 调用 CreateFile 端点时,我被告知 SHA 不正确。

我还尝试附加换行符,计算内容的base64编码值的SHA,计算base64+尾随换行符的SHA,但它们都没有给我62b551731eada762035d4665978027cd44291290. Github 是如何计算这个值的?

我已经仔细检查了远程文件的内容是否相同 - “来自测试” - 不知何故 SHA 仍然不同。

Kev*_*rke 5

Ah - GitHub 正在计算 的总和blob <length>\x00<contents>,其中 length 是内容字符串的长度(以字节为单位),并且\x00是单个空字节。

sha1("blob 9\x00from test")得出正确的总和!

有关更多信息,请参阅/sf/answers/505773061/ 。