Прежде всего, для аутентификации вам не нужен «зашифрованный» пароль; хранение зашифрованного пароля подвергает ваших пользователей риску, и я настоятельно не рекомендую его. Поскольку пользователи не знают, они могут использовать один и тот же пароль для своего банковского счета и вашей игры. Помогите им оставаться в безопасности, заботясь об этом пароле.
Вместо этого сохраните необратимый «хэш» пароля и случайную «соль». Есть много вопросов о том, как это сделать в StackOverflow, и пара их ответов почти верна.
Часть вашего вопроса, которая является уникальной, заключается в том, что вы особенно обеспокоены производительностью процесса аутентификации. Это интересный вопрос, потому что хорошая схема защиты паролем на самом деле разработана, чтобы быть немного медленной. Это должно победить злоумышленника, который пытается угадать пароль в «автономной» атаке, где он может проверить миллиарды паролей. Чем медленнее алгоритм, тем меньше попыток он может сделать.
Алгоритм, который я рекомендую для защиты паролей, на самом деле является алгоритмом деривации ключей, называемым PBKDF2 (PBKDF1 также будет работать), который описан в PKCS # 5. Одним из параметров настройки этих алгоритмов является количество итераций. Вы можете профилировать алгоритм на своем сервере и корректировать количество итераций, пока не найдете число, соответствующее вашим требованиям к производительности. Даже мой ноутбук может выполнять тысячи итераций в секунду, поэтому я, вероятно, начну с 2000 и продолжу работать.
Если вы на самом деле говорите о шифровании всего трафика между клиентом и сервером, используйте AES. Он был выбран из-за его скорости, хотя некоторые другие шифры в конкурсе, вероятно, более безопасны. В частности, используйте набор шифрования AES в соединении SSL.
Стоимость безопасного соединения - это соглашение о ключе (или передача ключа), которое происходит при настройке сеанса. Текущее шифрование (и вычисление целостности сообщения) добавляет очень мало накладных расходов.