Я думаю дело не в этом простой... Если вы не управляете терминалом completly, вы не можете защитить Яву с СМ. Например, Исконный classloader классы грузов, которые не подвергаются проверкам СМ и многим другим проверкам... Таким образом, пользователь может добавить lib в bootclasspath, у которого будут все привилегии.... (Например: папка классов или папка lib в явской инсталляции, он может даже отвергнуть Яву.* пакет, если он владеет jvm),
То, что можно сделать:
- Запутывает ваш код
- Использование скрытый API к вашему явскому приложению (не 'Ява - банка myapp.jar "/path/to/file/to/encrypt"')
И вы все еще не на 100% безопасны..., весь код может быть перепроектирован и алгоритм, и ключи извлечены, все, что можно сделать, затрудняют достаточно, что это больше не будет привлекательно.
РЕДАКТИРУЮТ
Я думаю, что у вас может быть большая проблема проектирования. А именно, если шифрование файла управляемо пользователями тогда, пользователь знает ключ шифрования, и вся безопасность остается в том ключе не вашим кодом. Любой может попытаться расшифровать его, но только кто-то с действительным ключом будет в состоянии. И если это так, чем ваш код не нуждается ни в каком специальном режиме.
Есть другая возможность, что вы включили секретный ключ в свое явское приложение..., и этот ключ статичен во всех ваших установках, тогда этот ключ больше не секретный, и это не шифрование, но путаница.