Это просто для того, чтобы честный клиент оставался честным.
Какой самый простой генератор лицензионных ключей я могу разработать за 1 день?
Ответы (7)
Есть ли ограничения операционной системы? Я думаю, что следующий подход будет довольно простым:
Выберите способ получения идентификатора машины. Например, это может быть
MachineGuid
запись реестра вHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
. (Создание уникального идентификатора машины)Определите функции, которые вы планируете лицензировать, и способ их идентификации. Вы можете просто назвать их. Если ваш продукт простой, это может быть сама функция.
Создайте пару открытого / закрытого ключей.
Получить каким-либо образом идентификатор машины клиента. Вы можете попросить его отправить его вручную, или вы можете создать простую утилиту, или это может быть специальная команда в вашем приложении.
Каким-то образом объедините идентификатор функции и идентификатор машины и подпишите результат своим закрытым ключом. Например, вы можете создать эту комбинацию путем конкатенации. В этом случае строка результата может выглядеть так: "YourApplicationName-12345678-9abc-def0-1234-56789abcdef0"
Подпись будет представлять собой последовательность байтов, поэтому, если вы хотите передать ее в текстовой форме, вам следует произвести в нее некоторое преобразование. Например, вы можете преобразовать подпись в строку Base64. Комбинация идентификатора функции, идентификатора машины и их комбинации будет лицензионным ключом!
Включите открытый ключ в дистрибутив вашего приложения и добавьте логику для проверки лицензии. Если лицензия действительна, вы должны убедиться, что она используется на правильном компьютере и в правильном приложении.
Подробнее об операциях с открытым / закрытым ключом здесь.
Скажите, если что-то непонятно, я постараюсь дать развернутый ответ.
РЕДАКТИРОВАТЬ: Я уверен, что реализовать все это можно за 1 день, но я согласен с другими, которые предлагают вам использовать существующие решения. Их много для разных платформ и языков программирования.
Почему бы тебе просто не получить его от кого-то другого. Если вы готовы потратить только один день, вы не получите хороший продукт.
Лицензионный ключ не помешает клиенту установить вам программное обеспечение несколько раз, если ключ не привязан к хэшу имени сервера и т. Д.
Поместите возможности продукта (количество пользователей, IP-адрес хоста, дату истечения срока действия и т. Д.) В текстовый файл. Подпишите файл открытым ключом, затем проверьте подпись во время выполнения.
Если у них есть мотивация, они могут декомпилировать код, выдернуть чеки или что-то еще, но это предотвратит вмешательство, и все будет выглядеть красиво и официально.
Невозможно сделать хорошую работу за день, и, скорее всего, общий эффект будет отрицательным. Это вызовет раздражение у ваших лояльных и честных клиентов и не остановит нечестных.
Вместо этого потратьте этот день на то, чтобы придумать способ как-то измерить уровень пиратства, которым подвергается ваш продукт. Узнав об этом, вы сможете оценить, сколько денег вы теряете и сколько усилий вам действительно стоит вложить в защиту или другие подходы.
Если вы все же хотите это сделать, самый простой способ - собрать некоторые данные, уникальные для установки (имя пользователя ОС, адрес электронной почты, серийный номер процессора / материнской платы - все, к чему вы хотите привязать), попросите пользователя отправить их вам и сгенерируйте лицензионный ключ, зашифровав его своим закрытым ключом. Ваше программное обеспечение должно собирать одни и те же данные, расшифровывать лицензию с помощью вашего открытого ключа и сравнивать два больших двоичных объекта.
Если вам нужен только псевдокод (какой язык / платформа?), Вы можете взять MAC-адрес компьютера (который предположительно должен быть уникальным) и создать функцию, которая объединяет его с некоторыми другими параметрами компьютера - и убедитесь, что вы проверяете его каждый раз при запуске приложений. против вашей собственной БД, сохраняя адрес электронной почты пользователя в этой строке.
если что-то изменится - программа не будет работать, но пользователь может запросить новый ключ - с той же почтой - тогда вы можете отозвать старый ключ и дать ему новый.
Самый простой генератор лицензий: ini-файл с заполненной контрольной суммой, который содержит имя клиента и информацию о том, какие модули включены. Взломать его будет довольно легко, но для не-хакера это безопасно. Имя должно быть видимым в выходных данных приложения, которые отображаются публично, чтобы другие потенциальные клиенты не могли использовать файл лицензии.