The MD5 hashing algorithm is a one-way cryptographic function that accepts a message of any length as input and returns as output a fixed-length digest value to be used for authenticating the original message. Hashing mechanisms are typically employed as part of username/password authentication, data integrity checking, or as part of larger protocols. MD5 hashing is no longer considered reliable for use as a cryptographic checksum because researchers have demonstrated techniques capable of easily generating MD5 collisions (where two unrelated inputs hash to the same output) on commercial off-the-shelf computers.