Suppose we have a hash-function (not a secure-hash) h(str) = the ascii value of the first two letters, added together. h("AB") = ascii('A') + ascii('B') = 65 + 66 = 131 h("CDEFG") = ascii('C') + ascii('D') = 67 + 68 = 135 h("AB") = h("ABC") = h("ABasd;jfsa;;asd;fas;fjk;") h("DD") = h("ECASDFSDF") h(" &") = ... h("DD") = 2*68 = 136 = h("BF") Okay, `h` is a pretty lame hash-function -- not a secure-hash. BUT sha256 is a much better hash-function. Are there two strings that both hash to the same result, using sha256 ? YES -- there are 16^(strlen( hash('sha256','hesdfasd') )) ~ 1.1e77 possible results, from sha256 output. But an infinite number of strings. So by the pigeon-hole principle, there are an inf. number of strings which all hash to the same result!