c++ - 如何计算 dmg 文件的 MasterChecksum 和 DataForkChecksum

标签 c++ macos checksum dmg

我尝试更改有关 dmg 文件的一些信息, 它运行良好,但是当我尝试打开 dmg 时出现错误消息

checksum invalid

所以我得到了我的 dmg 文件的标题,并且我得到了我需要的所有信息。 我有一个 DataForkChecksum 和一个 MasterChecksum,但我不知道如何计算它们。

有人知道怎么做吗?

最佳答案

主校验和是校验和的校验和。它是根据 DMG 中存在的 BLKX block 的所有校验和的串联二进制值计算的 CRC-32 校验和(多项式 = 0xedb88320)。计算起来非常痛苦。

libdmg 包含执行此操作的 GPL 代码。特别是查看 http://shanemcc.co.uk/libdmg/libdmg-hfsplus/dmg/dmglib.c 中的 calculateMasterChecksum() 函数

关于c++ - 如何计算 dmg 文件的 MasterChecksum 和 DataForkChecksum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11340583/

相关文章:

c++ - 如何检查应用程序本身的校验和?

c++ - 分配两次 - c++

c++ - 为什么某些隐式类型转换在一台机器上是安全的而不是在另一台机器上?我怎样才能防止这个跨平台问题?

macos - 为什么下面的汇编代码不打印出换行符(0xa)?

java - 关于 Java 中 MD5 校验和计算的说明

java - 我如何计算字节数组的 1 字节校验和

c++ - 使用/链接静态 C++ 库 config4cpp

c++ - 优雅地退出无限循环线程

ios - Xcode - 如何修复 'NSUnknownKeyException' ,原因 : … this class is not key value coding-compliant for the key X"error?

macos - OSX - 已签名的安装程序被拒绝