Алгоритмов с открытым ключом не так и много, поэтому, собственно, я бы взял RSA. Для маленьких сообщений (меньше длины RSA-ключа) можно шифровать непосредственно им. Для больших обычно шифруют симметричным алгоритмом со случайным ключом, а ключ затем шифруют RSA. Единственное, что минимальное сообщение будет равно длине RSA-ключа, а они у него довольно длинные — 512 бит считается не очень безопасным, коммерческие ключи начинаются от 1024 бит.