如何生成类似于 git hash-object 命令的 sha1

how to generate sha1 similar to git hash-object command

知道为什么 git 哈希对象与 shasum 和 openssl 命令有不同的结果吗?

➜ printf test | shasum
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3  -

➜  printf test | git hash-object --stdin
30d74d258442c7c65512eafab474568dd706c430

➜  echo -n "test" | shasum
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3  -

Git 添加一个 header 其中包含内容的 typelength 然后它生成哈希。这就是您与众不同的原因。

Here是更详细的描述。