Why md5('240610708') is equal to md5('QNKCDZO')?

Farid Movsumov picture Farid Movsumov · Mar 3, 2014 · Viewed 20.9k times · Source
var_dump(md5('240610708') == md5('QNKCDZO'));

Output:

bool(true)

Example: http://3v4l.org/2vrMi

Answer

xdazz picture xdazz · Mar 3, 2014

md5('240610708') 's result is 0e462097431906509019562988736854.

md5('QNKCDZO') 's result is 0e830400451993494058024219903391.

They are both float number format strings (numerical strings), and if you use == in php, when compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically.

Both of the strings are converted to 0 when compared with ==, if you want to compare them as string, remember to use ===(strict comparison) instead.

See: PHP expresses two different strings to be the same