2

OpenSource .NET Licensing Engine を開発しています。このエンジンは、ハードウェア ID (ハードディスクのシリアル番号) をロックとして使用し、この値をCRC16して短縮識別子を取得します。

例の値はMAXTOR ST3100、476300BE で、CRC16 の結果は3FF0 です。

私の懸念は、2 つの異なる値が同じ CRC16 値を取得する頻度です。それとも、代わりに CRC32 を使用する必要がありますか?

4

3 に答える 3

6

2 つのアイテムが衝突する確率 = 1 ⁄ 0x10000 = 0.00152%...

しかし、アイテムが 2 つ以上ある場合は、誕生日問題を参照してください。発生する可能性が高くなります
。衝突の確率が 50% になるには、アイテムが 300 個あれば十分です。

http://www.texify.com/img/%5CLARGE%5C%21%5CLARGE%5C%21%5Cleft%281%20-%20%5Cfrac%7B0%7D%7B2%5E%7B16%7D%7D% 5Cright%29%5Cleft%281%20-%20%5Cfrac%7B1%7D%7B2%5E%7B16%7D%7D%5Cright%29%5Cleft%281%20-%20%5Cfrac%7B2%7D%7B2% 5E%7B16%7D%7D%5Cright%29%5Cleft%281%20-%20%5Cfrac%7B3%7D%7B2%5E%7B16%7D%7D%5Cright%29%5Ccdots%5Cleft%281%20-% 20%5Cfrac%7BN%7D%7B2%5E%7B16%7D%7D%5Cright%29%3D%2050%25%20%5C%5C%20N%20%5Capprox%20300.gif

于 2011-08-12T02:19:37.723 に答える
2

CRC16 は 16 ビット値なので、65536 分の 1 の確率であると言えます。

于 2011-08-12T02:19:47.817 に答える
0

一意の値を生成するハッシュ方法はなく、ある時点で衝突が保証されます。要件に基づいた最も近い方法は、ハードディスクのシリアル番号をそのまま使用することです。

ただし、ハッカーは簡単にクラックします。

于 2011-08-12T02:25:56.763 に答える