> -- Сергей Губанов писал(а):
> Как в исходном тексте программы "спрятать" константы (ключи для шифрования), чтобы хакеры помучились их из программы выковыривать? На самом деле, как это сделать идей-то всяких много, интересует есть ли какой-либо научный подход к этой проблеме?...

Известный алгоритм шифрования RSA (или RSA-Euro) основан на использовании двух ключей: открытого и закрытого. Открытым можно только шифровать. Для дешифровки используется закрытый ключ.
Поэтому обычно делают так: забивают в исходный текст список ключей, предварительно зашифровав их открытым ключом RSA. Когда пользователь вводит свой персональный ключ, он тоже шифруется тем же открытым ключом RSA, и затем ищется в списке. Закрытый ключ никак не используется.

Уязвимое место здесь - участок программы, в котором производится сравнение двух ключей. Если это просто код вроде IF Ключ_Пользователя = Ключ_Из_Списка THEN ...., то его довольно просто найти и пропатчить.   Но разными хитрыми приемами его можно очень хорошо замаскировать.