Вы просто распечатываете byte[].toString
, что не содержимое хэша.
System.out.println(encoded.toString());
Чтобы отобразить хеш в виде текста, необходимо преобразовать байтовый массив в шестнадцатеричный или base64 - для этого существует множество фрагментов в переполнении стека (например, с использованием кодека Apache Commons ). Если вам не нужен хеш как текст, вы можете просто оставить его как байтовый массив.
Также обратите внимание, что вы не должны использовать этот код:
byte[] bArray=password.getBytes()
При этом будет использоваться системная кодировка символов по умолчанию, которая может варьироваться от системы к системе и может не иметь возможности кодировать весь Unicode. Используйте фиксированную кодировку, такую как UTF-8, которая всегда будет давать одинаковые результаты для одного и того же входа, независимо от настроек системы по умолчанию, и которая может кодировать весь Unicode.