Вы описываете протокол
CHAP (у него много разновидностей, но суть примерно одна и та же):
1) сервер генерирует случайное число и направляет его пользователю (принципиально обеспечить его неповторяемость, поэтому обычно в него вносят компоненту от системного времени сервера); если пароль на сервере захеширован необратимо, то высылает в этом же пакете соль;
2) клиент хеширует это случайное число со своим паролем, либо с хешем от пароля на присланной соли, и пересылает на сервер;
3) сервер независимо выполняет те же операции и сверяет результаты.
P.S. Если Вы не будете использовать уникальную компоненту - описанная Вами выше схема будет небезопасной !