我有一个文件的内容为“ 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仍然不同。
答案 0 :(得分:0)
Ah-GitHub正在计算blob <length>\x00<contents>
的总和,其中length是内容字符串的字节长度,而\x00
是单个空字节。
sha1("blob 9\x00from test")
得出正确的总和!
有关更多信息,请参见https://stackoverflow.com/a/7225329/329700。