Как добавить лицензирование в Java-программу? [закрыто]
Вопрос
Я подал заявку в Java. Теперь я хочу доставить его нескольким клиентам. Я хочу, чтобы каждый клиент должен приобрести серийный ключ для использования этого программного обеспечения. Без этого ключа программное обеспечение не должно запускаться так же, как другие программные продукты на рынке.
Как я могу это сделать?
Я знаю, что не могу защитить его полностью. Мне просто нужна простая функциональность последовательного ключа, чтобы не техническим специалистам и начинающим программистам было бы трудно взломать систему безопасности.
Решение
Я упомянул EasyLicencer (который обеспечивает достойный уровень < a href = "http://www.agilis-sw.com/ezlm/protection.htm" rel = "nofollow noreferrer"> защита от обратного инжиниринга) в предыдущем answer . Вы найдете другие варианты в обсуждении. Для решения с открытым исходным кодом ознакомьтесь с коллекцией библиотек TrueLicense , но для этого может потребоваться больше работы над вашим сторона. р>
Другие советы
Доступны стандартные библиотеки. (Быстрый поиск в Google обнаружил продукт под названием JLicense , например.) Но это не так сложно, а также более гибко реализовать свой собственный механизм. Одним из простых подходов было бы вычисление хэша SHA-1 имени клиента плюс немного жестко запрограммированной соли. Кодируйте результат в виде буквенно-цифровых символов, и вы получите лицензионный ключ. Теперь, когда кто-то собирается установить ваш продукт, спросите его имя клиента и лицензионный ключ. Пересчитайте хеш и сравните его с ключом клиента, который пользователь дал вам для аутентификации ключа.
Это всего лишь один простой пример. Вы можете делать разные вещи, включая шифрование некоторых данных и сохранение их в ключе (например, срок действия или подмножество разблокированных функций). Вы можете сделать это так просто или сложно, как вам нравится.
Имейте в виду, однако, что любое решение, которое вы придумали, может быть перепроектировано кем-то с достаточным умением и мотивацией, если вы не используете какую-либо систему распределенной аутентификации. Возможно, этого легче достичь в Java, чем с помощью встроенных скомпилированных языков, таких как C или C ++. Запутывание кода может помочь.