Как вы можете защитить / зашифровать ваши классы Java? - PullRequest
1 голос
/ 23 ноября 2010

Некоторое время назад в моей работе мне нужно было защищать некоторые классы от других, чтобы они читали код. Для этого я создал EncryptedClassLoader, который загружал ранее зашифрованные классы и также мог загружать обычные (не зашифрованные) классы. Работать таким образом было немного сложно, и тестирование тоже (компилировать, затем шифровать, а затем расшифровывать).

Есть ли какой-нибудь бесплатный фреймворк, чтобы делать то, что мне нужно, и он прост в обращении? Я имею в виду не только запутывание, но и шифрование файлов, поэтому никто не может прочитать или отладить эту часть кода. Также было бы здорово, если бы я мог легко менять ключи для шифрования (в моем приложении это было жестко задано).

Заранее спасибо.

Ответы [ 5 ]

7 голосов
/ 23 ноября 2010

Короткий ответ, вы не можете.Шифрование не работает.Вот старая статья о том, почему бессмысленно использовать зашифрованный загрузчик классов :

К сожалению, вы ошибаетесь, думая, что вы первый придумали этоидея и думать, что это на самом деле работает.И причина не имеет ничего общего с силой вашей схемы шифрования.

Вы можете запутать это, но это будет только так далеко, и в конце концов, я твердо верю, что ваше времябыло бы лучше потратить на исправление ошибок или добавление функций.

3 голосов
/ 23 ноября 2010

Шифрование не добавляет безопасности для запутывания. Любой, кто сможет запустить вашу программу, также сможет сбросить зашифрованный байт-код на диск. Я предполагаю, что именно поэтому шифрование байт-кода не очень распространено, например, при подписании.

Если вы действительно хотите зашифровать свой байт-код, убедитесь, что вы его также запутываете, и я думаю, что используемый вами метод будет работать просто отлично без добавления каких-либо платформ или библиотек.

1 голос
/ 21 июля 2017

Мы используем библиотеку JarProtector для шифрования наших файлов JAR.Не запутывание, а только шифрование.Нет возможности изменить ключ шифрования, но defineClass () никогда не будет вызываться.

0 голосов
/ 11 октября 2017

Вы можете попробовать VLINX Java Protector , он делает собственный ClassLoader, изменяя JVM для шифрования и дешифрования данных класса, а не ClassLoader, написанный на Java, может эффективно защитить ваш код Java

0 голосов
/ 23 ноября 2010

Единственный способ защитить свой код - просто запретить пользователю запускать его.Вместо того, чтобы распространять приложение, продавайте доступ к онлайн-сервису.Затем ваш код хранится на сервере, и единственное, что вы раскрываете - это интерфейс.

Альтернатива - защищать ваш код с помощью договоров и юристов, но если вы не написали что-то действительно хорошо, тогда это будет стоить вам больше, чем доход, который вы в противном случае потеряли бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...