Нет способа полностью скрыть такие секреты от решительных атакующих, но есть способы поднять планку (которая иногда может служить как сдерживающим фактором, так и временной мерой).
Самый простой способ сделать это - применить одноразовые планшеты, такие как XOR.
int pad = 322;
int secret = 360;
int value = pad ^ secret; // This is 42
Вы можете добавить комбинации таких одноразовых планшетов вместе с запутанными криптографическими функциями, чтобы злоумышленнику было труднее найти значение.
Обратите внимание: несмотря на то, что злоумышленникам становится труднее получить ключ, взглянув на скомпилированный код, они все равно могут подключить отладчик к запущенному процессу и извлечь вычисленный ключ прямо из памяти. На самом деле, есть отладчики (такие как IDA pro), которые делают подобные вещи почти тривиальными.
Вам также придется беспокоиться о том, что ОС подкачает ваш ключ на диск после того, как он был вычислен, что можно извлечь довольно тривиально. (Использование чего-то вроде mlock () для блокировки страниц в памяти может помочь вам в этом.)
Во всяком случае, это очень сложная проблема, с которой сталкиваются многие авторы программного обеспечения, чтобы внедрить ненавязчивые (например, не проверяющие ключи по сети) схемы лицензирования.