计算 Github API 文件 SHA

Compute Github API file SHA

我有一个文件,其内容为 "from test" - 9 个字节。文档说创建文件的 SHA 是使用 SHA1 计算的:

The file's SHA-1 hash is computed and stored in the blob object.

(来自 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+ 尾随换行符,其中 none 给了我 62b551731eada762035d4665978027cd44291290。 Github 如何计算该值?

我仔细检查了远程文件的内容是否相同 - "from test" - SHA 仍然不同。

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

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

有关详细信息,请参阅 。