我正在学习Git packfile,并且正在尝试重现(在Java中)我认为整个packfile的SHA1 20字节校验和 . 我将字节数组从“PACK”4字节 Headers 中取出,并将其包括在最后一个打包对象的压缩数据的末尾 . 我读过的所有内容都表明接下来的20个字节是整个packfile的SHA1校验和 .
从Git接收的字节数组的20字节校验和是:B910248BF9B63AC53595E3835CA57BDAF08DA830
我使用以下来计算自己的SHA1校验和: crypt = MessageDigest.getInstance("SHA-1"); crypt.reset(); crypt.update(testData); byte [] result = crypt.digest();
我的结果最终为:B910248BF9B63AC53595E3835CA57BDAF08DA813
我很困惑我的结果的最后一个字节只能与Git不同(如果我使用的是字节流的正确部分) . 如果唯一的问题是传递给digest()的数据范围,那么整个计算的校验和很可能看起来不同 .
有任何想法吗?
1 回答
使用JGit: