要求

2009-11-18 27 views
0

这个源代码的基础上的Adler32要求

它aparently提供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); 
} 

回答

0

它肯定不会提供安全的CRC32相同的水平,这是“没有安全性可言”。 CRC和ADLER校验和不是密码哈希,而且它们不能承受故意的攻击。他们的目的是防止无意的错误,如线路噪声,这就是全部。

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