蒲善思 发表于 2025-10-17 17:10:03

CRC32的直接和反转模式

CRC计算的本质是对数据流进行一种二进制除法。关键在于:我们是先处理一个字节的最高有效位是(MSB),还是最低有效位(LSB)
直接模式/正向就是处理MSB,一个字节最高位bit7到最低位bit0
反转模式/反向则是LSB,先处理一个字节的最低位bit0,到最高位bit7
两者在计算时,初值,多项式,结果是否反转中多项式为反转的模式
比如正常crc32,直接模式的多项式为0X4C11DB7 , 反转模式是0xEDB88320

下面是CRC32的两种c语言代码

点击查看代码uint32_t CRC32(uint8_t *data, uint16_t len, uint32_t init)
{
        /*init = 0xFFFFFFFF*/
    uint32_t poly = 0x04C11DB7;
    uint8_t i;

    while (len--)
    {
      init = init ^ (*data << 24);
      for (i = 0; i < 8; i++)
      {
            if (init & 0x80000000)
            { // if成立,该二进制位是1
                init = (init << 1) ^ poly;
            }
            else
            { // esle成立,该二进制位是0
                init = (init << 1);
            }
      }
      data++;
    }
    return init;
}
/*反crc*/
uint32_t crc32_reverse(const uint8_t *data, size_t length)
{
    uint32_t crc = 0xFFFFFFFF;
    uint32_t polynomial = 0xEDB88320;

    for (size_t i = 0; i < length; i++)
    {
      crc ^= data;

      for (int j = 0; j < 8; j++)
      {
            if (crc & 1)
            {
                crc = (crc >> 1) ^ polynomial;
            }
            else
            {
                crc = crc >> 1;
            }
      }
    }

    return ~crc;
}
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

里豳朝 发表于 2025-11-11 00:04:09

前排留名,哈哈哈

梦霉 发表于 2025-11-20 11:45:59

很好很强大我过来先占个楼 待编辑

高清宁 发表于 2025-11-27 16:48:15

感谢,下载保存了

涂流如 发表于 2025-12-7 04:26:41

感谢分享,学习下。

敛饺乖 发表于 2025-12-14 16:05:31

过来提前占个楼

屠焘 发表于 2025-12-19 13:17:07

鼓励转贴优秀软件安全工具和文档!

烯八 发表于 2025-12-21 03:46:22

谢谢分享,试用一下

姥恫 发表于 2025-12-27 19:47:45

感谢分享,下载保存了,貌似很强大

蓬庄静 发表于 2026-1-2 04:45:18

东西不错很实用谢谢分享

坠矜 发表于 2026-1-14 03:13:01

热心回复!

峰邑 发表于 2026-1-17 09:30:09

这个好,看起来很实用

劳暄美 发表于 2026-1-17 11:16:27

热心回复!

颜清华 发表于 2026-1-17 15:31:17

这个好,看起来很实用

骂治并 发表于 2026-1-18 18:02:44

yyds。多谢分享

马璞玉 发表于 2026-1-19 06:44:19

感谢分享

敖可 发表于 2026-1-20 10:07:44

热心回复!

癖艺泣 发表于 2026-1-21 00:20:06

鼓励转贴优秀软件安全工具和文档!

谭皎洁 发表于 2026-1-21 02:19:58

分享、互助 让互联网精神温暖你我

司马黛 发表于 2026-1-23 06:19:57

yyds。多谢分享
页: [1] 2
查看完整版本: CRC32的直接和反转模式