Ваш хеш фактически вычисляет один и тот же результат каждый раз, но вы вызываете toString
для полученного байтового массива. Это возвращает строку отладки, которая отличается для каждого экземпляра (см. этот вопрос для деталей).
Вместо
return hashedPassword.toString();
Вы должны
return hashedPassword;
... и используйте byte[]
напрямую.
Если вы хотите отобразить хэш в удобочитаемом формате, вы можете напечатать его следующим образом:
String hashString = new BigInteger(1, hashedPassword).toString(16);
System.out.println(hashString);
В вашем коде есть вторая ошибка. Четвертый аргумент конструктора PBEKeySpec
- длина в битах . 10 слишком коротка, чтобы быть полезной. Вы, вероятно, хотите 512 (длина вывода SHA512).