Вы можете разбить данные на куски или использовать функции OpenSSL «печать» / «открытие».
По сути, они генерируют случайный набор ключей, шифруют ключи с помощью открытого ключа, а затем используют эти ключи для шифрования того, что вы хотите. Таким образом, вы не ограничены определенными размерами, и дешифрование не слишком медленное (вы дешифруете случайные ключи только с помощью RSA, остальное делается с помощью симметричного шифрования, поэтому это намного быстрее).
Предлагаю вам взглянуть на EVP_SealInit и EVP_OpenInit .