【问题标题】:Compute Github API file SHA计算 Github API 文件 SHA
【发布时间】:2019-04-15 04:17:16
【问题描述】:

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

文件的 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 仍然不同。

【问题讨论】:

  • 我认为this 会是答案,但这似乎也不匹配。
  • 就是答案,你需要把14改成9。
  • 哦,很好。我确实更改了字节数,但认为它没有给出正确的值。很高兴你成功了。

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


【解决方案1】:

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

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

请参阅https://stackoverflow.com/a/7225329/329700 了解更多信息。

【讨论】:

  • FWIW,这不是 GitHub 的东西,而是 Git 的东西。
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 2011-07-30
  • 2014-02-03
  • 1970-01-01
相关资源
最近更新 更多