Поиск [закрытого] алгоритма лицензионного ключа

Существует много вопросов, касающихся лицензионных ключей, которые спрашивают относительно Переполнения стека. Но они не отвечают на этот вопрос.

Кто-либо может предоставить простой алгоритм лицензионного ключа, который является независимой технологией и не делает потребовал, чтобы диплом в математике понял?

Алгоритм лицензионного ключа подобен шифрованию с открытым ключом. Мне просто нужно что-то простое, которое может быть реализовано в любой платформе.NET/Java и использует простые данные как символы.

Ответы, записанные как Псевдо код, прекрасны.

Таким образом, если человек представляет строку, дополнительная строка может быть сгенерирована, который код авторизации. Ниже общий сценарий, для которого это использовалось бы.

  1. Клиент загружает программное обеспечение, которое генерирует уникальный ключ после начального запуска/установки.
  2. Программное обеспечение работает в течение пробного периода.
  3. В конце пробного периода требуется авторизационный ключ.
  4. Клиент переходит к обозначенному веб-сайту, вводит их код, и заставьте код авторизации включать программное обеспечение после оплаты :)

Не бойтесь описать свой ответ, как будто Вы говорите с 5-летним, поскольку я не математик.

33
задан Troyseph 30 April 2015 в 10:22
поделиться

5 ответов

Не существует надежного алгоритма лицензирования. Действительно. Ни одного. Для самого популярного и самого дорогого проприетарного программного обеспечения, которое вы можете купить, вы также можете найти «генераторы ключей» и взломанные версии, не требующие лицензирования.

Вместо того, чтобы беспокоиться о том, чтобы сделать его «нерушимым», просто сделайте что-нибудь простое. Популярный механизм - при покупке запрашивать имя пользователя, а затем давать ему лицензионный ключ, полученный из криптографического хэша (например, сумма MD5) имени пользователя или его разновидности. Затем в программе вы снова запрашиваете их имя, а также регистрационный ключ (эта вещь, производная от MD5); вы проверяете, совпадают ли они, что активирует программное обеспечение.

Это можно взломать? Абсолютно. Как только кто-то выяснит, как вы генерируете лицензионные ключи, он сможет сгенерировать свои собственные. Но если вы сохраните базу данных сгенерированных вами «официальных» лицензионных ключей, по крайней мере, вы сможете идентифицировать мошенников позже (возможно, когда они попытаются загрузить «премиальный» контент или что-то в этом роде).

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

43
ответ дан 27 November 2019 в 18:13
поделиться

В вопросах безопасности отказ от повторного использования хорошо известного и проверенного алгоритма и попытки создать свой собственный (без математических знаний) является самоубийственным

Раскрытие: Мне совершенно не хватает математической степени, чтобы создать такой алгоритм, и, честно говоря, я лично не знаю никого, у кого он есть

2
ответ дан 27 November 2019 в 18:13
поделиться

Я использую такую ​​систему:

• создать строку из лицензионного ключа Windows + дата окончания пробного периода

• сгенерируйте хэш (Sha / md5) из строки

• преобразуйте дату окончания пробного периода в int (например, количество дней)

• ключ становится пробным дата окончания + некоторая часть хэша

• преобразовать ключ только в символы верхнего регистра, чтобы упростить ввод

ABCD-DEFG-HIJK ...

проверка работает как

• преобразовать ключ в еще раз байты

• извлечь дату окончания пробного периода

• создать строку из лицензионного ключа Windows + дата окончания пробного периода

• хэш

• сравнить хэш с остальной частью ключа

, это достаточно усложняет задачу для моей аудитории .

7
ответ дан 27 November 2019 в 18:13
поделиться

Честно говоря, то, что вы пытаетесь сделать, бессмысленно. Сколько бы ни у вас ни ушло времени на написание системы проверки / шифрования / ключа, оцените примерно половину этого времени для того, чтобы кто-нибудь ее взломал. Даже если вы зашифруете финальный исполняемый файл. Однако в качестве меры отсрочки или способа снизить вероятность того, что люди получат премиальную поддержку в случае украденных копий, это поможет. Также для простого отслеживания покупателей. Или для развлечения. : p

В любом случае, есть несколько способов справиться с этим. Многие программы используют строку (и) имени (и, возможно, компании) и хеш-функцию для генерации ключа. У этого есть то преимущество, что он постоянен (пока имя то же, хеш есть, а значит, и ключ). Это также очень простая система, особенно если вы используете хорошо известный хеш, например MD5.

hash = md5(name);

Некоторые более изящные приложения используют внутреннюю функцию для генерации какого-либо кода проверки, и когда вы объединяете это и заданное имя, вы можете создать (и отправить обратно) хэш.

validCode = getCode(name);
hash = myHash(name ^ validCode);

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

sysID = processor_name() | ram_Speed();
hash = md5(sysID & name);

Вы можете использовать любую комбинацию хэш-функций, получения данных, строковых вводов, логических операций и т. Д. Одна вещь, которую следует учитывать, - вам не нужно иметь возможность обращать процесс.Пока вы можете воспроизвести его с теми же результатами (может любая хорошая хеш-функция), вы можете сравнивать хешированные результаты друг с другом и убедиться, что они действительны. Чем больше вы вставите, тем сложнее будет, но тем сложнее будет взломать.

Надеюсь, это поможет с вашим вопросом.

3
ответ дан 27 November 2019 в 18:13
поделиться

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

По моему профессиональному мнению, создавать программное обеспечение, которое будет иметь уникальный брендинг для пользователя (зашифрованное внутри программы конечно). Например, если вы перейдете в раздел «Справка» -> «О программе», отобразите имя, телефон и, возможно, адрес человека. Таким образом, если они загрузят его на какой-то пиратский сайт, не только другие люди узнают личную информацию этого парня ... но и вы, чтобы потребовать от него дополнительные лицензии или подать на него в суд.

0
ответ дан 27 November 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: