Я думаю, что вы правы, начальная reset()
не нужна. Документация гласит :
Объект MessageDigest начинает инициализироваться.
Также пример в документации класса не включает первоначальный сброс.
Это не имеет ничего общего с безопасностью потока, необходимость в .reset()
будет означать, что getInstance()
не выполняет саму инициализацию.
В любом случае вы не должны использовать один и тот же объект MessageDigest из нескольких потоков без синхронизации: хэш имеет смысл только в том случае, если вы знаете, в каком порядке хешируются части, в противном случае это просто не совсем детерминированный PRNG.