評價

2010-11-17 102 views
2

我看到如下所示的相同的基本CRC-32算法的許多不同的實現中CRC-32實施方式的不同之處:評價

int remain; 
int sbox[SIZESBOX]; 
int dividend; 
int bit; 

for(dividend = 0; dividend < SIZESBOX; dividend++) 
{ 
    remain = dividend << 24; 
    for(bit = 0; bit < 8; bit++) 
    { 
     if(remain & TOPBIT) 
     { 
      remain = (remain << 1)^POLYNOMIAL; 
     } 
     else 
     { 
      remain = (remain << 1); 
     } 
    } 
    sbox[dividend] = remain; 
} 

它們中的一些再進S盒XOR被除數。其他人在進入位循環之前進行XOR,而其他人則使用按位反射。

對於給定用例,我需要考慮CRC-32的不同實現之間是否存在差異?是否使用按位反射或XOR-OUT必然比沒有?爲什麼有這麼多不同的實現呢?

回答

0

CRC32不是一個加密算法,所以你的問題讓我覺得你需要考慮你長期和艱苦地使用它。

1

CRC32在任何方面都不安全,所以從加密的角度來看,這些變化是不相關的。它可能會影響分配屬性,但我懷疑這也是相關的。

CRC只是一個校驗和,可以防止隨機更改(特別是bitflips),但不能用作加密哈希。你應該使用SHA-1或更好的。