请求对rsp32校验和进行评论

时间:2009-11-18 12:48:41

标签: c

此源代码基于adler32

它显然提供了相同级别的crc32安全性,但速度提高了50%

如果它有缺陷可以有人告诉我哪里有缺陷以及为什么最好留在crc32?

在crc32的同一级别找到数据冲突并不容易,至少在我的测试中是这样

unsigned int rsp32 (unsigned int adler, const unsigned char *buf, unsigned int len)
{
     uchar  s1 = adler & 0xff;
     uchar  s2 = (adler >> 8) & 0xff;
     uchar  s3 = (adler >> 16) & 0xff;
     uchar  s4 = (adler >> 24) & 0xff;
     int    svansa = 0;
     int    ok12 = len;

     if (buf == NULL)
       {
        return 1L;
       }

     while (ok12)
       {
        s1 += buf[svansa++];
        s2 += s1;
        s3 += s2;
        s4 += s3;
        ok12--;
       }

     return s1 + (s2 << 8) + (s3 << 16) + (s4 << 24);
}

1 个答案:

答案 0 :(得分:0)

它确实提供了与crc32相同的安全级别,这“完全没有安全性”。 CRC和ADLER校验和不是加密哈希,它们不是为了抵御故意攻击而设计的。它们旨在防止意外错误,如线路噪音等等。

话虽如此,它看起来像是一个合理的校验和。