Probability of SHA1 collisions
HashSha1ProbabilityHash Problem Overview
Given a set of 100 different strings of equal length, how can you quantify the probability that a SHA1 digest collision for the strings is unlikely... ?
Hash Solutions
Solution 1 - Hash
> Are the 160 bit hash values generated > by SHA-1 large enough to ensure the > fingerprint of every block is unique? > Assuming random hash values with a > uniform distribution, a collection of > n different data blocks and a hash > function that generates b bits, the > probability p that there will be one > or more collisions is bounded by the > number of pairs of blocks multiplied > by the probability that a given pair > will collide.
(source : http://bitcache.org/faq/hash-collision-probabilities)
Solution 2 - Hash
Well, the probability of a collision would be:
1 - ((2^160 - 1) / 2^160) * ((2^160 - 2) / 2^160) * ... * ((2^160 - 99) / 2^160)
Think of the probability of a collision of 2 items in a space of 10. The first item is unique with probability 100%. The second is unique with probability 9/10. So the probability of both being unique is 100% * 90%
, and the probability of a collision is:
1 - (100% * 90%), or 1 - ((10 - 0) / 10) * ((10 - 1) / 10), or 1 - ((10 - 1) / 10)
It's pretty unlikely. You'd have to have many more strings for it to be a remote possibility.
Take a look at the table on this page on Wikipedia; just interpolate between the rows for 128 bits and 256 bits.
Solution 3 - Hash
That's Birthday Problem - the article provides nice approximations that make it quite easy to estimate the probability. Actual probability will be very very very low - see this question for an example.