Насколько уникально значение CRC16? - PullRequest
2 голосов
/ 12 августа 2011

Я разрабатываю движок лицензирования OpenSource .NET. Этот механизм использует идентификатор оборудования (серийный номер жесткого диска) в качестве блокировки и CRC16 это значение для получения сокращенного идентификатора.

Пример значения MAXTOR ST3100, 476300BE , а CRC16 результат 3FF0

Меня беспокоит то, как часто значение 2 diffrent получает одно и то же значение CRC16, или я должен вместо этого использовать CRC32?

Ответы [ 3 ]

6 голосов
/ 12 августа 2011

Вероятность столкновения между 2 предметами = 1 ⁄ 0x10000 = 0,00152% ...

Но если у вас более 2 предметов, смотрите День рождения - он получает лот с большей вероятностью:
Вам просто нужно 300 предметов, чтобы получить 50% вероятность столкновения.

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

2 голосов
/ 12 августа 2011

Поскольку CRC16 является 16-битным значением, я бы сказал, что вероятность составляет около 1 в 65536.

0 голосов
/ 12 августа 2011

Никакой метод хеширования не генерирует уникальные значения, коллизии гарантируются в какой-то момент.Ближайшая ставка, основанная на ваших требованиях, заключается в простом использовании серийного номера жесткого диска как есть.

Хотя хакеры легко его взломают.

...