Если Вы хотите "спрятать" реализацию алгоритма, лучше всего это сделать на сервере. В таком случае Вам нужно будет отправить всего лишь один запрос с минимальным количеством данных (по защищенному каналу).
В качестве альтернативного варианта транспорта можете использовать СМС: приложение будет отправлять зашифрованное СМС на определенный номер, а на другом конце сервер обработает СМС и отправит назад такое же зашифрованное СМС, в котором будет ключ.
Если ни один подобный вариант не подходит, лучше всего написать реализацию алгоритма на C (как уже советовали выше), но C точно также можно декомпилировать, если очень захотеть. Софт типа IDA Pro решает подобные задачи на ура.
Единственный способ хоть как-то скрыть и усложнить дизассемблирование - это применение различных техник обфускации бинарного кода. Эта тематика особенно популярна в среде вирусописателей. Они используют т.н. "крипторы", одна из разновидностей которых - это полиморфный криптор.
В полиморфном крипторе зачастую используется
виртуализация для защиты кода от анализа антивирусом. Иными словами, Вы должны написать виртуальную машину, под которую скомпилируете Ваш алгоритм. В этом случае выполнением кода будет заниматься виртуальная машина и исходный код алгоритма невозможно будет декомпилировать без знания устройства ВМ.
Чтобы не писать все самому с нуля, посмотрите вот эти ссылки и погуглите на тему
virtualization obfuscation:
vmpsoft.com - софт который делает как раз то что Вам нужно
https://oreans.com/codevirtualizer.php - похожий софт
https://www.reddit.com/r/ReverseEngineering/commen...
https://github.com/fritzone/obfy - небольшой фреймворк на C++ для обфускации кода.
В целом же все эти варианты (кроме варианта с запросами на сервер) не дадут 100% защиты от декомпиляции кода.