Hashing is one way, it’s irreversible (you cannot “de-hash” a hash to get back the original text).

As opposed to encrypting which is revisable (by decrypting).

A hash function is any function that can be used to map data of arbitrary size to data of fixed size.

The values returned by a hash function are called hash values, hash codes, digests, or simply hashes.

i.e: Hash functions compress large amounts of data into a small message digest.

Requirements

Hash algorithms have a few requirements:

  • One way (document -> hash). You can’t easily reverse a hash into the original document.

  • Speed. Churn into a big file for a second or at most. But not too quick b/c otherwise easy to break!

  • Avalanche effect: If when an input is changed slightly (for example, flipping a single bit) the output changes significantly (e.g., half the output bits flip).

  • Avoid hash collisions.

Applications

You’ll find that hashes play a role in:

  • Browser security (website’s certificate – signing TSL certificate)

  • Managing code repositories (GIT strongly relies on hashes to identify commits and objects)

  • Detecting duplicate files in storage.

  • Hash table

  • Cryptography

Risks

Over time, however, these requirements can fail due to attacks on the mathematical underpinnings of hash functions or to increases in computational power.

Sources

https://en.wikipedia.org/wiki/Hash_function

MD5 source code: https://tls.mbed.org/md5-source-code

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply