You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git对象SHA-1计算结果不一致,如何获取正确值?

问题:如何生成Git文档示例中一致的SHA-1哈希值?

我正在阅读Git对象存储相关文档,试图理解摘要的生成方式。文档示例中将header与content拼接为字符串"blob 16\u0000what is up, doc?",通过Ruby的Digest::SHA1.hexdigest计算得到SHA-1值为bd9dbf5aae1a3862dd1526723246b20206e5fc37。但我使用多个在线工具计算该字符串的SHA-1,结果均与示例不符,推测是空字节\u0000导致的问题。我还尝试用C++代码测试:

int main() {
    std::string store = "blob 16\u0000what is up, doc?"; // The input string

    unsigned char hash[SHA_DIGEST_LENGTH]; // SHA-1 produces a 20-byte (160-bit) hash

    // Calculate the SHA-1 hash
    SHA1(reinterpret_cast<const unsigned char*>(store.c_str()), store.length(), hash);

    // Convert the hash to a hexadecimal string
    char hash_str[2 * SHA_DIGEST_LENGTH + 1];
    for (int i = 0; i < SHA_DIGEST_LENGTH; i++) {
        sprintf(&hash_str[i * 2], "%02x", hash[i]);
    }
    hash_str[2 * SHA_DIGEST_LENGTH] = '\0';

    std::cout << "SHA-1 Hash: " << hash_str << std::endl;

    return 0;
}

得到的SHA-1值为ef04a980b37021f6534130548617df7588eac70f,仍与示例不一致。请问如何才能得到与文档一致的结果?

内容的提问来源于stack exchange,提问作者Samir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:21:12