Ответ 1
Я использую систему проверки частичного ключа (PKV), и я реализовал это на С# с помощью генератора PHP. Google придумает различные хиты, объяснения и реализации; но Брэндон Стаггс написал хороший обзор (хотя и в Delphi!), здесь:
PKV работает, кодируя определенную информацию (тип лицензии, серийный номер продукта, дату и т.д.) в ключе вместе с хешем имени пользователя и хешей кодированной информации. Большая часть ключа фактически состоит из нескольких хэшей char. Идея состоит в том, что вы проверяете только подмножество этих хэшей. Точное подмножество, которое было выпущено, со временем может быть изменено для некоторой безопасности и для защиты от определенных видов обратной инженерии.
Я бы также зашифровал ключ, чтобы помочь запутать то, что означает каждый char в лицензии. В противном случае кто-то с несколькими ключами может определить, что определенные позиции char означают определенные вещи ( "о, символы 3-4 являются серийным номером" ). Это может быть щель в ваших доспехах!
Любая лицензионная система, которую вы разрабатываете, будет несовершенной. Это будет треск, и если ваши продукты будут популярны, они будут взломаны. Однако есть веский аргумент в пользу наличия системы лицензирования, чтобы честные люди честны и создавали достаточно препятствий для немного нечестных людей - но не так много препятствий, что это становится слишком большим неудобством (например, я вообще против блокировки оборудования). Те, кто взламывают вашу систему, вероятно, не собирались платить за нее в любом случае.