Здесь вы получили несколько плохих советов.
Лучшей стандартной практикой является отправка самого пароля на сервер при условии, что ссылка защищена SSL / TLS.Ваше приложение должно получить этот пароль, хэшировать его (не используя MD5, а допустимый соленый хеш (или bcrypt, который является лучшим решением)), а затем сравнить его с сохраненным соленым хешем.Следовательно, ваше приложение никогда не хранит пароли пользователей, поэтому, если ваш файл / база паролей будет скомпрометирован, пароль не будет раскрыт, и, если вы используете алгоритм с сильным соленым хешем / bcrypt, никто не сможет перебрать хэш, чтобы восстановить действительный пароль.
Однако вам необходимо сделать это на стороне сервера, в вашем приложении.Ваше приложение должно взять пароль и сделать это хэширование.Если вы хешируете пароль на клиенте и отправляете в приложение реальный соленый хеш, вы открываете себя для другой атаки.Если кто-то украл ваш файл паролей / базу данных, он узнает хеш пароля пользователя.Если у вас есть клиент, отправляющий хеш на сервер, злоумышленник будет точно знать, какой хеш отправить, и сможет получить доступ к учетной записи любого пользователя!Вместо этого вы хотите, чтобы клиент сам отправил пароль и чтобы сервер генерировал хеш на его основе, чтобы злоумышленник не знал, что отправить, при попытке войти в систему как пользователь (поскольку вы не можете взять соленый хеш и восстановитьпароль от него, при условии сильной реализации хеша с солью).