Какова вероятность угадывания (соответствия) Guid?

Просто любопытно, но какова вероятность совпадения Guid?

Скажите руководство от SQL-сервера: 5AC7E650-CFC3-4534-803C-E7E5BBE29B3D

- это факториал?: (36 * 32)!= (1152)!

обсудить = D

Ответ 1

Не понятно, что вы просите. Я вижу два способа интерпретировать ваш вопрос.

  • Учитывая GUID g, какова вероятность того, что кто-то его угадает? Предположим для простоты, что все 128 бит GUID доступны. Тогда вероятность угадать g равна 2^-128. Это мало. Позвольте получить некоторую интуицию вокруг этого. Предположим, что наш злоумышленник может генерировать один миллиард идентификаторов GUID в секунду. Чтобы иметь 50% -ный шанс угадать g, нашему злоумышленнику пришлось бы генерировать 2 ^ 127 GUID. При скорости одного миллиарда в секунду для генерации 2 ^ 127 GUID потребуется 5391448762278159040348 лет.

  • Мы генерируем набор контуров. Какова вероятность столкновения? То есть, какова вероятность того, что мы создадим два гида с одинаковым значением? Это парадокс дня рождения. Если вы произвольно генерируете последовательность из n GUID, то вероятность по крайней мере одного столкновения приблизительно равна p(n) = 1 - exp(-n^2 / 2 * 2^128) (это проблема дня рождения с числом возможных дней рождения 2 ^ 128).

n p(n) 2^30 1.69e-21 2^40 1.77e-15 2^50 1.86e-10 2^60 1.95e-03

Таким образом, даже если вы генерируете 2 ^ 60 GUID, вероятность столкновения крайне мала. Если вы можете генерировать один миллиард идентификаторов GUID в секунду, все равно потребуется 36 лет, чтобы иметь вероятность столкновения 1,95e-03.

Ответ 2

Число возможных GUID (128-битное значение) составляет 2 ^ 128 или 3,4 × 10 ^ 38 - примерно 2 трлн. за кубический миллиметр всего объема Земли.

Другими словами, вид низкого.

(Источник для задания объема Земли: WikiPedia)

Ответ 3

Зависит от типа алгоритма генерации GUID. Текущие алгоритмы используют 124 случайных бита, поэтому вероятность равна 1 в 2 ^ 124.

С более старыми алгоритмами (использующими время и MAC-адрес) вероятность намного выше.

Ответ 4

В ваших расчетах есть несколько ошибок. Во-первых, 36 * 32 означает, что любой буквенно-цифровой символ может быть частью GUID. Это не тот случай; допускаются только символы HEX.

Во-вторых, вычисление количества уникальных идентификаторов GUID Количество действительных символов (16: 0-9, A-F) ^ длина GUID (32 символа)

Итак, мы имеем 16 ^ 32 == > 2 ^ (4 ^ 32) == > 2 ^ 128

Шансы угадать любой GUID составляют 1/2 ^ 128.

Ответ 5

Это 1/(количество уникальных чисел, которое возможно с заданной длиной UID). В приведенном выше примере мы видим 16 байтов или 128 бит. 2 ^ 128, поэтому вероятность совпадения равна 1/2 ^ 128.

Ответ 6

Это зависит от количества GUID. Это похоже на проблему рождения в статистике. См. Википедию и http://betterexplained.com/articles/understanding-the-birthday-paradox/ (в этом примере есть пример GUID)

В общем случае вероятность столкновения для генерации M-гильд над N возможными концами равна 1 - (1- (1/N))^C(M,2), где C(M,2) есть "M выбрать 2"