Общие сведения: я развернул систему, основанную на активации, построенную на основе сторонней системы лицензирования, то есть интеграции сервера, базы данных и электронной коммерции. Я также отдельно написал систему активации C # с использованием ключей RSA, но никогда не развертывал ее.
Продукт Активация обычно означает, что программное обеспечение должно быть активировано на данном компьютере. Я полагаю, это то, что вы имеете в виду. Если вам нужно всего лишь две строки, которые означают «демо» и «приобретенный», то они будут расшифрованы и распространены в течение нескольких часов (при условии, что ваш продукт является ценным). Там просто нет смысла.
Так. при условии, что вы хотите «активацию», тогда, когда пользователь покупает ваше программное обеспечение, должен произойти следующий процесс:
- Программное обеспечение для выполнения заказа сообщает серверу сгенерировать «ключ покупки» и отправить его пользователю
- Пользователь вводит «Ключ покупки» в программное обеспечение
- Программное обеспечение отправляет ключ покупки и уникальный идентификатор компьютера на сервер.
- Сервер объединяет ключ покупки и идентификатор машины в строку, подписывает его сертификатом и возвращает его пользователю.
- Программное обеспечение проверяет действительность подписи с использованием открытого ключа Сервера.
- Программное обеспечение может проверять множество мест: загружать сигнал во многих местах, проверять его в других.
При генерации ключей покупки сервер может хранить не только то, что продукт был куплен, но и какой уровень продукта. Вы также можете иметь «бесплатные» продукты с ограниченным сроком действия, поэтому пользователь может попробовать полную версию программного обеспечения в течение 30 дней.
Вы используете C #, поэтому убедитесь, что вы запутываете двоичные файлы, используя dotfuscator или эквивалентный. Тем не менее, даже с этим вы ничего не можете сделать против решительного хакера. Ваша цель, я полагаю, состоит в том, чтобы заставить неоплачиваемых пользователей быть либо самими хакерами, либо рисковать, используя взломанную версию: детям все равно, корпорации могут. YMMV.
Код, выполняющий проверку, должен находиться в каждой сборке, которая нуждается в защите, в противном случае злоумышленник может тривиально снять защиту, заменив сборку, выполняющую проверку. Вырежьте и вставьте код, если вам нужно.
Или просто купить что-нибудь.
Другой вариант заключается в том, чтобы сервер предварительно сгенерировал «Ключи покупки» и передал их службе выполнения заказов, но тогда вам не удастся связать ключ с данными клиентов (по крайней мере, до тех пор, пока они не зарегистрируются). Лучше, чтобы сервер электронной торговли попал на ваш сервер после совершения покупки, а ваш сервер отправил его.
Сложная часть - это не столько генерация ключей активации, сколько создание сервера, базы данных и интеграция с программным обеспечением для электронной коммерции, и, прежде всего, человеческие проблемы: разрешаете ли вы неограниченную установку за Купить ключ? Только 1? Если только 1, то у вас должна быть поддержка клиентов и возможность позволить пользователю установить его на новый компьютер. Это только одна проблема. Все виды веселья.