Это как минимум часть проблемы:
messageDigest.update(inPassword.getBytes());
Используется кодировка платформы по умолчанию для преобразования пароля в байты.Это может варьироваться в зависимости от системы, на которой вы его запускаете.Я бы настоятельно предложил бы вам указать кодировку - в идеале такую, которая будет справляться со всеми символами Юникода (например, UTF-8).
Возможно, вы также захотите подумать о посоле и использовании чего-то лучшегочем MD5, и я не уверен в том, что вы конвертировали из byte[]
в гекс - это может быть нормально, но я бы нашел библиотеку, которая бы делала все это без использования BigInteger
.