Один из возможных способов сделать это - включить ключ дешифрования в начало файла, и ключ был обработан каким-либо образом, который можно определить по ключу. Один из вариантов - выбрать, скажем, шестнадцать разных вещей, причем 0, скажем, повернуть первые два байта до конца; 1 - поворот двух последних байтов вперед; 2 добавляет 1 к каждому байту; и так далее для 14 дополнительных функций. Теперь добавьте это значение перед ключом как «флаг повторной обработки».
Первый байт ключа будет тогда таблицей ветвления для одной из 16 различных подпрограмм, чтобы сказать, что делать с ключом. Обратите внимание, что флаг повторной обработки не обязательно должен быть первым байтом, это может быть любой байт в ключе, если вы не забыли выбросить этот байт при обработке ключа.
Затем вы обрабатываете ключ в соответствии с любым алгоритмом расшифровки, который вы используете.
Теперь, учитывая, что этот флаг повторной обработки - особенно если весь ключ был в шестнадцатеричном формате - потребовал бы, чтобы кто-то следовал логике, чтобы определить, какую из 16 различных функций выполнял ваш код, затем выяснил метод расшифровки. Это не остановит всех, но, вероятно, сработает довольно хорошо, отгоняя всех, кроме самых решительных.