Line 17:
Line 17:
This last part means that if it finds a NULL byte, it stops comparing, '''even if there is more data after the NULL'''.
This last part means that if it finds a NULL byte, it stops comparing, '''even if there is more data after the NULL'''.
−
This reduces the effective length of the hash to the number of bytes before the NULL byte. This means that the difficulty of finding a hash match is reduced from 2^(HASHLENGTH*8) to 2^(bytes before the null). That is a big change if the NULL is early in the hash. Assuming the NULL is at the 5th byte, that means that there is a one in 2^(4*8) chance that the hash matches, or one in 4 294 967 296, fairly computable within a reasonable time frame on a current computer that can check a few million hash inputs each sec.
+
This reduces the effective length of the hash to the number of bytes before the NULL byte. This means that the difficulty of finding a hash collision is reduced from 2^(HASHLENGTH*8) to 2^(bytes before the null). That is a big change if the NULL is early in the hash. Assuming the NULL is at the 5th byte, that means that there is a one in 2^(4*8) chance that the hash matches, or one in 4 294 967 296, fairly computable within a reasonable time frame on a current computer that can try a few million hash inputs each sec.