OpenSource .NET Licensing Engine を開発しています。このエンジンは、ハードウェア ID (ハードディスクのシリアル番号) をロックとして使用し、この値をCRC16して短縮識別子を取得します。
例の値はMAXTOR ST3100、476300BE で、CRC16 の結果は3FF0 です。
私の懸念は、2 つの異なる値が同じ CRC16 値を取得する頻度です。それとも、代わりに CRC32 を使用する必要がありますか?
OpenSource .NET Licensing Engine を開発しています。このエンジンは、ハードウェア ID (ハードディスクのシリアル番号) をロックとして使用し、この値をCRC16して短縮識別子を取得します。
例の値はMAXTOR ST3100、476300BE で、CRC16 の結果は3FF0 です。
私の懸念は、2 つの異なる値が同じ CRC16 値を取得する頻度です。それとも、代わりに CRC32 を使用する必要がありますか?
2 つのアイテムが衝突する確率 = 1 ⁄ 0x10000 = 0.00152%...
しかし、アイテムが 2 つ以上ある場合は、誕生日問題を参照してください。発生する可能性が高くなります
。衝突の確率が 50% になるには、アイテムが 300 個あれば十分です。
CRC16 は 16 ビット値なので、65536 分の 1 の確率であると言えます。
一意の値を生成するハッシュ方法はなく、ある時点で衝突が保証されます。要件に基づいた最も近い方法は、ハードディスクのシリアル番号をそのまま使用することです。
ただし、ハッカーは簡単にクラックします。