Никогда не отправляйте пароль через незащищенное простое HTTP-соединение.
Использование TLS (преемника SSL), как указано в j0k, будет вашим способом, если возможно, вы должны использовать его, когда это возможно, вместо того, чтобы придумывать свои собственные схемы. Если вы просто используете односторонний TLS / SSL (т. Е. Только сервер аутентифицирует себя, клиент остается анонимным), тогда вы избавите себя от необходимости обработки симметричных ключей шифрования на стороне клиента.
Если вы правильно настроили свой TLS на сервере, вы можете просто передать незашифрованные учетные данные пользователя. TLS как протокол обрабатывает шифрование на транспортном уровне, поэтому вам, как разработчику, больше не нужно об этом заботиться.
Еще одна вещь, которую вы, вероятно, должны сделать, это не хранить пароли в зашифрованном виде, а просто хранить соленый их хеш (SHA-1 или что-то подходящее) в вашей базе данных. Таким образом, вы никогда не рискуете скомпрометировать пароли вашего пользователя.