Digital Signatures (e.g. RSA Signatures) are great because they achieve data integrity, message authentication and non-repudiation. However, they have few problems especially when the message (x) is long. In another word (How do we sign a message (x) greater than the modulus n?). The following figure shows an alternative solution, which split the message into blocks and sign each block individually.
This technique (the figure above) works perfectly, but will face some problems:
- Computational load: Public-Key operations are time-consuming.
- Transmission or storage overhead: Signature is as long as the message itself.
- Security: Similar problems to ECB mode of operation (remove individual blocks, inject old blocks).
The solution to solve this problem is very simple, which is by having a shorter “representation” of a message, so that we can (sign) that instead of the message itself. This solution is known as (hash function produce representation); and also it is called hash or message digest, or digital fingerprint.