На самом деле, потому что, когда вы md5 пароль, он вычисляет хэш. Тогда строка длиннее 16 символов, некоторые «хэши» могут столкнуться между ними.
Например, если md5("noroof")
дает, 9ce405c98406f2f6d5326ee6b51d19cd
возможно, что md5("ididntfixedmyroofwhenicould")
может дать тот же хэш 9ce405c98406f2f6d5326ee6b51d19cd
. Помните, что хэши состоят из 32 символов «0123456789abcdf» (в данном случае для md5).
Может быть, они используют 16 символов, потому что алгоритм, который вычисляет хеш, гарантирует, что не будет столкновения в базе данных с ранее сохраненным паролем.