Hash functions and message integrity
Hash functions are mathematical functions that take an arbitrarily sized input string, and generate a fixed-size output called a hash value or a message digest. A good hash function should calculate hashes easily; it will be very difficult to calculate the plaintexts of a given hash, and it does not generate the same hash for two different inputs, except in rare cases.

There are many well-known hash functions used nowadays; they are as follows:
- Hashed message authentication code
- Message Digest (MD2)
- Message Digest (MD4)
- Message Digest (MD5), if you want to encrypt or decrypt a plaintext you can use http://md5decrypt.net/en/ shown here:

- Secure Hash Algorithm (SHA)
- Whirlpool
- HAVAL
- RIPEMD
Digital signatures
The main goal of digital signatures is to verify the authenticity and integrity of a message or document. You can see it as an electronic fingerprint. The following graph shows the steps to sign a document:
