Как генерировать и проверить программный лицензионный ключ?

Я в настоящее время вовлекаюсь в разработку продукта (разработанный в C#), это будет доступно для загрузки и установки бесплатно, но в очень ограниченной версии. Для получения доступа ко всем функциям, пользователь должен заплатить лицензионный сбор и получить ключ. Тот ключ будет затем вводиться в приложение, чтобы "разблокировать" полную версию.

Поскольку использование лицензионного ключа как этот довольно обычно, я задаюсь вопросом:

  1. Как это обычно решается?
  2. Как я могу генерировать ключ и как он может быть проверен приложением?
  3. Как я могу также постараться не иметь ключ, опубликованный в Интернете и используемый другими, которые не заплатили лицензию (ключ, который в основном не "их").

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

Что-либо еще я должен думать о в этом сценарии?

220
задан Andrew Truckle 9 October 2019 в 23:07
поделиться

0 ответов

Протест: Вы не можете препятствовать тому, чтобы пользователи грабили, но только помочь честным пользователям сделать правильную вещь.

Принятие Вас не хотят делать специальную сборку для каждого пользователя, тогда:

  • Генерируют себя, секретный ключ для продукта
  • Берет имя пользователя
  • Concatentate, который называют пользователи, и секретный ключ и хеш с (например), SHA1
  • Распаковывают хеш SHA1 как алфавитно-цифровую строку. Это - "Ключ продукта"
  • отдельного пользователя В рамках программы, сделайте тот же хеш и сравните с ключом продукта. Если равный, хорошо.

, Но, я повторяюсь: это не предотвратит пиратство

<час>

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

Просто мысль я действительно должен упомянуть это, хотя; если Вы планируете получить что-то еще из этого, остерегаться.

122
ответ дан Steven A. Lowe 23 November 2019 в 04:07
поделиться

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

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

4
ответ дан Marius 23 November 2019 в 04:07
поделиться

Я использовал Crypkey в прошлом. Это - один из многих доступных.

можно только защитить программное обеспечение в какой-то степени с любой схемой лицензирования.

6
ответ дан Mitch Wheat 23 November 2019 в 04:07
поделиться

Помимо того, что было уже указано....

Любое использование приложений.NET по сути вскрываемы из-за проблем промежуточного языка. Простое дизассемблирование кода.NET откроет Ваш продукт для любого. Они могут легко обойти Ваше лицензирование кода в той точке.

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

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

, Если Ваш продукт является сложным, свойственные проблемы поддержки будут, создают некоторую защиту для Вас.

22
ответ дан 23 November 2019 в 04:07
поделиться

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

после нахождения некоторых ключей или патчей, плавающих в astalavista.box.sk, Вы будете знать, что преуспели в том, чтобы делать что-то достаточно популярным, который кто-то потрудился взламывать. Радуйтесь!

56
ответ дан shoosh 23 November 2019 в 04:07
поделиться

Простой ответ - Какая схема Вы используете его, может быть взломан.

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

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

Хороший поток по проблеме: http://discuss.joelonsoftware.com/default.asp?biz.5.82298.34

73
ответ дан palerdot 23 November 2019 в 04:07
поделиться

Я не знаю, как тщательно продуманный Вы хотите добраться

, но я полагаю, что .NET может получить доступ к порядковому номеру жесткого диска.

у Вас могла быть программа, отправляют Вам это и что-то eles (как имя пользователя и MAC-адрес nic)

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

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

6
ответ дан Crash893 23 November 2019 в 04:07
поделиться