3

以下に示す同じ基本的な 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;
}

それらのいくつかは、sbox に入る前に被除数を XOR します。ビット ループに入る前に XOR を使用するものもあれば、ビットごとのリフレクションを使用するものもあります。

特定のユースケースについて、CRC-32 のさまざまな実装間で考慮する必要がある違いはありますか? ビットごとのリフレクションまたは XOR-OUT を使用するものは、使用しないものよりも必ずしも優れていますか? とにかく多くの異なる実装があるのはなぜですか?

4

2 に答える 2

1

CRC32は決して安全ではないため、暗号化の観点からは、バリエーションは関係ありません。分布特性に影響を与える可能性がありますが、それも関係があるとは思えません。

CRCは単なるチェックサムであり、ランダムに変更されたもの(特にビットフリップ)から保護しますが、暗号化ハッシュとして使用することはできません。そのためにはSHA-1以上を使用する必要があります。

于 2010-11-17T19:01:40.117 に答える
0

CRC32は暗号化アルゴリズムではないので、あなたの質問から、CRC32を長くハードに使用しているものを検討する必要があると思います。

于 2010-11-17T19:01:17.627 に答える