Адам прав: если вы хэшируете несколько значений вместе, вы не можете получить их обратно из хэша.
Звучит так, будто вам действительно нужно шифрование: зашифрованное сообщение не имеет смысла для противника, который его перехватывает, но его ценность (и) может быть извлечена дружественной стороной на другом конце. *
Безопасность для веб-приложений - это отдельное специальное поле со множеством ресурсов, о которых вы можете узнать, как это сделать.
Предлагаемый подход будет следующим:
На стороне клиента создайте хэш случайных байтов и пароль. Упакуйте имя пользователя, метку времени и хэшированное значение и надежно отправьте его на сервер (с использованием SSL или шифрования).
С сервера расшифруйте или иным образом «разархивируйте» значения и сравните хешированный пароль и имя пользователя со значениями в базе данных. Если совпадает, разрешить доступ, если нет, отказать.
(это предполагает, что вы используете случайные байты в качестве «соли» для хеша. Если нет, просто хешируйте пароль, а не случайные байты).
* = Это очень высокоуровневое представление о том, как работает шифрование, и предполагает, что все выполнено правильно, без компрометации промежуточного шага и т. Д. И т. Д.