Хеш-функция моделирует случайного оракула : для каждого входа, если он еще не запрашивался ранее, мы бросаем кубик, чтобы найти выход, а затем записываем его в какую-то книгу. Если вход снова запрашивается, просто верните это старое значение.
Выбрасывая 16-стороннюю кость 40 раз (для каждого входа), мы получаем достаточно вывода для оракула, подобного SHA-1. (Для MD5 нам нужно всего 32 раза.)
Таким образом, мы можем вычислить вероятность «40 раз только буквы» как (6/16) ^ 40 ≈ 9,15 · 10 ^ -18, «40 раз только цифры» имеет вероятность (10/16) ^ 40 ≈ 6,8 · 10 ^ -9.
Поскольку «количество попыток, необходимых до первого успеха» распределено геометрически, нам нужно в среднем 1 / р попыток, то есть около 10 ^ 17 попыток «только букв» и 1,5 · 10 ^ 8 попыток «только цифр» ».
(Теперь, SHA-1 не является реальным случайным оракулом, но нет известной слабости, которая могла бы сказать, что SHA-1 будет иметь лучшие или худшие вероятности для одного из них. А пока, кажется, что грубая сила действительно быть лучшим способом сделать это.)