41.6k views
1 vote
We consider three different hash functions which produce outputs of lengths 64,128 and 160 bit. After how many random inputs do we have a probability of ε =0.5 for a collision? After how many random inputs do we have a probability of ε= 0.9 for a collision? Justify your answer.

User ArDumez
by
8.4k points

1 Answer

2 votes

Answer:

To calculate the number of random inputs required for a probability of ε=0.5 or ε=0.9 for a collision in a hash function, we can use the birthday paradox formula, which states that the probability of at least one collision in a set of n randomly chosen values from a set of size m is:

P(n, m) = 1 - (m! / (m^n * (m-n)!))

where ! denotes the factorial operation.

For a hash function producing outputs of lengths 64, 128, and 160 bits, the number of possible outputs are 2^64, 2^128, and 2^160, respectively.

To calculate the number of inputs required for ε=0.5, we need to solve for n in the above equation when P(n, m) = 0.5:

0.5 = 1 - (m! / (m^n * (m-n)!)) 0.5 = m! / (m^n * (m-n)!) (m^n * (m-n)!) = 2m! n ≈ sqrt(2m*ln(2)) (approximation)

Using the approximation formula above, we get:

For 64-bit hash function, n ≈ 2^32 For 128-bit hash function, n ≈ 2^64/2^2 = 2^62 For 160-bit hash function, n ≈ 2^80

So, for ε=0.5, the approximate number of random inputs required for a collision are 2^32 for a 64-bit hash function, 2^62 for a 128-bit hash function, and 2^80 for a 160-bit hash function.

To calculate the number of inputs required for ε=0.9, we need to solve for n in the above equation when P(n, m) = 0.9:

0.9 = 1 - (m! / (m^n * (m-n)!)) 0.1 = m! / (m^n * (m-n)!) (m^n * (m-n)!) = 10m! n ≈ sqrt(10m*ln(10)) (approximation)

Using the approximation formula above, we get:

For 64-bit hash function, n ≈ 2^34 For 128-bit hash function, n ≈ 2^65 For 160-bit hash function, n ≈ 2

Step-by-step explanation:

User Joan Esteban
by
8.1k points