Hashing Algorithms
MD5: A popular and widely used hash function designed in the early 1990s as a cryptographic hashing function
-  ​It operates on a 512 bit blocks and ​generates 128 bit hash digest.
SHA1: It is part of the secure hash algorithm suite of functions, designed by the NSA and published in 1995
- another widely ​used cryptographic hashing functions ​used in popular protocols like TLS/SSL, ​PGP/SSH, and IPSec.Â
- ​SHA1 is also used in version control systems like Git, ​which uses hashes to identify revisions and ​ensure data integrity by ​detecting corruption or tampering
- SHA1 is part of the Secure Hash Algorithm suite of ​functions designed by the NSA and published in 1995.Â
- ​It operates a 512 bit blocks and ​generates 160 bit hash digest.
MIC (Message Integrity Check): It is essentially a hash digest of the message in question
-  ​You can think of it as a checksum for the message, ​ensuring that the contents of ​the message weren’t modified in transit.
- ​It doesn’t use secret keys, ​which means the message isn’t authenticated. ​There’s nothing stopping an attacker ​from altering the message, ​recomputing the checksum, and ​modifying the MIC attached to the message
Password shouldn’t be stored in plain text because if your systems are compromised, ​passwords for other accounts are ultimate prize for the attacker.
Rainbow tables: A pre-computed table of all possible password values and their corresponding hashes
- Rainbow table attacks: To trade computational power for disk space by pre-computing the hashes and storing them in a table

Password salt: Additional randomized data that’s added into the hashing function to generate the hash that’s unique to the password and salt combination
