Hash functions are irreversible, one-way functions which protect the data, at the cost of not being able to recover the original message. Hashing is a way to transform a given string into a fixed-length string. A good hashing algorithm will produce unique outputs for each input given.