PHP Hashes Kollision, Probleme und Fehler bei Validierung

Version vom 5. Oktober 2017, 21:39 Uhr von Alpha (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Der md5-hash sollte bei Kollisionsprüfung immer mit === statt == verglichen werden. Grund hierfür ist die von User unbeabsichtige Typenkonvertierung, Aufgrund der schwachen Typisierung nimmt PHP Hashwerte mit 0e und einer zahl als Exponentialschreibweise war und rechnet im Ergebnis immer 0 aus.

    if (md5('240610708') == md5('QNKCDZO'))
    {
        echo "Kollision";
    }

    var_dump(md5('240610708')); //string(32) "0e462097431906509019562988736854"
    var_dump(md5('QNKCDZO'));   //string(32) "0e830400451993494058024219903391"