我尝试更改有关 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/