Генерим новый рандомный ключ для симметричного алгоритма. Им шифруем данные. Ключ шифруем ассиметричным. Зашифрованный ключ отсылаем вместе с данными. На сервере берём зашифрованный ключ и расшифровываем его второй частью ключа (приватной) от ассиметричного алгоритма. Уже им расшифровываем основные данные. Если задача не хранить в коде ключи от симметричного алгоритма ...
Двустороннее асиметричное шифрование в системе используется для авторизации на сервере. Всё левые запросы отсекаются. Каким образом работать с рандомным ключом в течении времени не совсем ясно, зашифровал файл, нет связи как его потом расшифровывать хз. Но даже если синхронизировать этот процесс, то для шифрования на стороне клиента в любом случае потребуется приватный ключ.