计算Github API文件SHA

时间:2019-04-14 18:55:48

标签: github github-api github-api-v3

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

  

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

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

但是,当我计算“来自测试”的十六进制编码的SHA1输出时,得到5669556d9a5c27fdd649dcaaa0873757c2aa402f

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

我也尝试过添加换行符,计算内容的base64编码值的SHA,计算base64 +的SHA尾随换行符,但没有一个给我62b551731eada762035d4665978027cd44291290。 Github如何计算该价值?

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

1 个答案:

答案 0 :(得分:0)

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

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

有关更多信息,请参见https://stackoverflow.com/a/7225329/329700