gpt4 book ai didi

crc - 如何计算 WinRAR 文件的 CRC?

转载 作者:行者123 更新时间:2023-12-02 19:47:51 29 4
gpt4 key购买 nike

我从Wikipedia知道CRC计算算法。关于RAR文件的结构我读过here 。例如有这样写:

The file has the magic number of:

   0x 52 61 72 21 1A 07 00

Which is a break down of the following to describe an Archive Header:

   0x6152 - HEAD_CRC
0x72 - HEAD_TYPE
0x1A21 - HEAD_FLAGS
0x0007 - HEAD_SIZE

如果我理解正确的话,HEAD_CRC (0x6152) 是标记 block (MARK_HEAD) 的 CRC 值。我在某处读到,WinRAR 文件的 CRC 是使用标准多项式 0xEDB88320 计算的,但是当 CRC 的大小小于 4 字节时,有必要使用较低有效字节。在这种情况下(当然如果我理解正确的话)CRC 值为 0x6152,所以它有 2 个字节。现在我不知道我必须将哪些字节视为不太重要。来自标准多项式(0xEDB88320)?那么 0x8320 可能是该多项式的较低有效字节。接下来,如果我们已经有了正确的多项式,如何计算标记 block 的 CRC(即从以下字节:0x 52 61 72 21 1A 07 00)?

最佳答案

可能对并非源自 32 位 CRC 的旧格式进行了 16 位检查。 zip 和 rar 使用的标准 32 位 CRC 应用于 header 的最后五个字节,没有任何部分等于前两个字节。 Polish 页面声称两字节校验是 32 位 CRC 的低两字节似乎是不正确的。

从文档中确实可以看出,该 header 与旧格式中的其他 block 一样以标准方式构建,因此作者为了好玩,安排了他的格式给出检查值“Ra”,以便它可以拼出“拉尔!”后跟一个文本终止控件-Z。

我在 unrar 源代码中发现了另一个 16 位检查,但该检查也不会产生这些值。

哦,不,您不能接受 CRC 多项式的一部分并期望它对于较小的检查来说是一个好的 CRC 多项式。波兰语页面的意思是,您将计算完整的 32 位 CRC,然后取结果的低两个字节。然而,这不适用于魔数(Magic Number) header 。

关于crc - 如何计算 WinRAR 文件的 CRC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34493385/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com