MD5 должен быть быстрым среди криптографических хеш-функций. Но любая конкретная реализация может делать выбор, который на конкретной машине подразумевает неоптимальные характеристики. Какое оборудование вы используете? Тип процессора и размер кэша L1 очень важны.
Возможно, вы захотите взглянуть на sphlib : это библиотека, реализующая множество криптографических хеш-функций, в C (оптимизированный, но переносимый) и Java. Код C может быть скомпилирован с дополнительным флагом «small footprint», который помогает на небольших встроенных платформах (в основном из-за проблем с размером кэша L1). Кроме того, код поставляется с md5sum-подобной утилитой командной строки и инструментом измерения скорости.
Среди хеш-функций MD4 обычно является самым быстрым, но на некоторых платформах Панама, Радиогатун [32] и Радиогатун [64] могут достичь аналогичной или лучшей производительности. Возможно, вы также захотите взглянуть на некоторых кандидатов SHA-3, в частности на Shabal, который довольно быстр в небольших 32-битных системах.
Важное примечание: некоторые хеш-функции «сломаны», в том смысле, что можно создавать коллизии: два разных входных файла, хэширующие одно и то же значение (именно то, чего вы хотите избежать). MD4 и MD5, таким образом, «сломаны». Однако, столкновение должно быть сделано с целью ; вам не удастся получить одну (неудачную) удачу (вероятности меньше, чем «столкновение» из-за аппаратной ошибки во время вычислений). Если вы находитесь в ситуации, связанной с безопасностью (кто-то может захотеть активно спровоцировать столкновение), тогда все будет сложнее. Среди тех, кого я цитирую, функции Radiogatun и Shabal в настоящее время не нарушены.