要求

2009-11-18 63 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校驗和不是密碼哈希,而且它們不能承受故意的攻擊。他們的目的是防止無意的錯誤,如線路噪聲,這就是全部。

話雖如此,它看起來像一個合理的校驗和。