Данная реализация отличается от многих других, которых мне удалось найти в открытом доступе, тем, что обрабатывается здесь не строка, а файл, который может быть довольно большим по размеру и содержать не только текстовую информацию (например, можно обрабатывать изображения), к тому же, можно проследить за тем, насколько быстро работает алгоритм с увеличением объема исходной информации. В функции main показана демонстрация работы алгоритма с PDF-файлом размером 2.2 МБ, хэш выводится и в консоль, и в выходной файл md5.txt, что позволит скопировать оттуда строку в буфер обмена.
