Адаптируя формулы в википедии для задачи «День рождения» , вы можете аппроксимировать вероятность столкновения как e^(-n^2/(2^(b+1)))
, где n
- количество документов, а b
- количество битов. График этой формулы с n = 100,000 , похоже, вы захотите b> 45 по крайней мере.Я был бы более склонен пойти с 64, чтобы сделать это хорошее и круглое число.Тем не менее, есть ли у вас план действий в случае коллизий, если они происходят (может, немного изменить временную метку или добавить одноразовый номер?)
В этом отношении, если sha1 основан не только на содержимомдокумент, почему бы просто не сделать его случайным идентификатором?В этом случае столкновения представляют меньшую проблему, поскольку вы всегда можете сгенерировать новое случайное число и повторить попытку (однако вероятность столкновения с одной попыткой одинакова).