How can zero byte files generate a hash value?
Hash algorithms read the input and process it, no matter if there's data at all. This is a valid and wanted behaviour and is even used to verify if a certain implementation is correct. This leads to "null-hashes" for all major algorithms.
To sum it up: da39a3ee5e6b4b0d3255bfef95601890afd80709 is the sha1-hash for an empty file everywhere, the same is true with the null-hashes of other alrogrithms.
All hash algorithms in Quick Hash are Merkle–Damgård constructions. As such, they pad the message to a multiple of the block size.
Quick Hash's algorithms achieve this by appending a 1
bit, as many 0
bits as needed, and finally the message length.
This allows hashing messages of arbitrary length, including zero-length messages.