Алгоритм ассиметричного шифрования?
1) Для каждого сеанса обмена сообщениями генерируется случайный сеансовый ключ.
2) Сеансовый ключ передается в зашифрованном виде при помощи RSA 512/1024/2048
3) В дальнейшем сообщения шифруются симметричным алгоритмом (AES 128/256, Twofish, Serpent, IDEA) при помощи сеансового ключа.
Плюсы:
+ размер ключа для симетричных алгоритмов меньше при сравнимой криптостойкости
+ размер блока (а значит, минимальный размер сообщения) составляет 128-256 бит
+ симметричные алгоритмы работают гораздо быстрее
Минусы:
 — нужно предварительно генерировать и передавать сеансовые ключи
 — нужно следить за сроком действия и актуальностью сеансовых ключей
Алгоритмов с открытым ключом не так и много, поэтому, собственно, я бы взял RSA. Для маленьких сообщений (меньше длины RSA-ключа) можно шифровать непосредственно им. Для больших обычно шифруют симметричным алгоритмом со случайным ключом, а ключ затем шифруют RSA. Единственное, что минимальное сообщение будет равно длине RSA-ключа, а они у него довольно длинные — 512 бит считается не очень безопасным, коммерческие ключи начинаются от 1024 бит.