Хеширование не было бы хорошей идеей. Еще лучше было бы либо использовать SSL, либо использовать его подмножество самостоятельно, используя API шифрования с открытым ключом в .NET Framework.
Вы выставите функцию GetPublicKey (), которая вернет открытый ключ, с помощью которого пользователь зашифрует свой пароль и отправит его вам. Затем используйте свой закрытый ключ, чтобы расшифровать его. И проверьте, правильно ли это. RSA или эллиптические кривые с открытым ключом очень хороши. Просто используйте 1024bit.
UPDATE:
проверьте это пример , а также это из MSDN