Какие методы / библиотеки / инструменты люди предложили бы для генерации лицензионных ключей (те замечательные вещи AAAAA-AAAAA-AAAAA-AAAAA-AAAAA, которые вы вставили при регистрации программного обеспечения)?
Есть ли какие-либо ошибки, которые нужно учитывать при их реализации?
(На данный момент меня интересует это как общая вещь, а не как язык, поэтому просто укажите, какой язык вы используете, если ваше решение зависит от языка).
Этот же вопрос был задан на SO, и принятый ответ довольно хорош. Общая суть:
источник
Мой предпочтительный метод состоит в том, чтобы сгенерировать 10000 случайных строк лицензий, SHA1 (или MD5), их хэшировать или HMAC, и включать все или часть SHA1 / MD5 хэша в сам исполняемый файл. Когда вводится строка лицензии, вы просто используете запутанный код, чтобы сгенерировать хеш строки и сравнить его со списком. Если это соответствует, это действительная лицензия. Если у вас мало лицензий, выпустите новую версию с большим количеством строк.
Использование только первых 96 битов хэша SHA1 вполне достаточно. Таким образом, 10000 лицензий займет менее 120 КБ. Алгоритмическая генерация ключей или создание генератора ключей были бы невозможны. Единственная уязвимость, о которой вам нужно беспокоиться, - это обратный инжиниринг или обход. (Или кто-то распространяет свой действительный ключ.)
источник