我有一个文件,它的内容是"from test“-9个字节。文档中说创建的文件的SHA值是使用SHA1计算的:
计算文件的SHA-1散列并将其存储在blob对象中。
(来自https://developer.github.com/v3/git/blobs/)
但是,当我计算"from SHA1“的十六进制编码的测试输出时,我得到的是5669556d9a5c27fdd649dcaaa0873757c2aa402f
。
Github API表示SHA为62b551731eada762035d4665978027cd44291290
-这是返回的ETag,以及API响应中用于检索文件的“sha值”。此外,当我使用"from test“作为值并使用566955...
作为sha来调用CreateFile端点时,我被告知SHA是不正确的。
我还尝试了附加换行符,计算内容的base64编码值的SHA值,计算base64+的SHA值作为尾随的换行符,这些方法都没有给出62b551731eada762035d4665978027cd44291290
。Github是如何计算这个值的?
我仔细检查了远程文件的内容是否相同-- "from test“--不知何故,SHA仍然不同。
发布于 2019-04-15 04:17:16
Ah - GitHub正在计算blob <length>\x00<contents>
的总和,其中length是内容字符串的字节长度,而\x00
是单个空字节。
sha1("blob 9\x00from test")
产生正确的总和!
有关详细信息,请参阅https://stackoverflow.com/a/7225329/329700。
https://stackoverflow.com/questions/55678890
复制相似问题