Даже если вы зашифруете файл JAR, он должен быть дешифрован, прежде чем JVM сможет его запустить, поэтому вам понадобится другой файл JAR, содержащий классы, которые расшифровывают и загружают в JVM.
После этогоВторой файл jar сам по себе не может быть зашифрован, злонамеренный пользователь, желающий увидеть ваши файлы классов, может просто просмотреть классы в этом втором файле jar, а затем расшифровать ваш сверхсекретный файл jar и получить к нему доступ.
Возможно, вы можете повысить безопасность своего кода, используя обфускатор, но в конечном итоге он защитит (сделает это сложнее, но не невозможно) файлы классов от декомпиляции, а не от использования.
Если запутывания недостаточно, вы можетерассмотрите возможность компилирования вашего jar-файла в DLL для Windows или SO для Unix / Linux, что затруднит декомпиляцию, но это не всегда возможно сделать правильно, и обычно это PITA.GCJ может сделать это как-то, и есть другие коммерческие продукты, которые на самом деле компилируют .class / .jar непосредственно в машинный код.
Однако, пожалуйста, учтите, что не имеет значения, какую безопасность вы в него вложите,поскольку клиентский компьютер ДОЛЖЕН быть в состоянии выполнить его, он должен иметь возможность читать его, поэтому независимо от того, какой код будет представлен, вы можете только усложнить его.
Если у вас действительно есть такой секретный алгоритмВы не хотите разглашать, несмотря ни на что, рассмотрите возможность преобразования его в веб-службу, размещения на своем сервере, чтобы вам не нужно было отправлять фактический код на клиентские машины, а также можно было лучше предотвращать несанкционированные копии вашихприложение, проверяя доступ к этой важной его части.