Исходник программы, показывающей пример реализации алгоритма генерации лицензионных ключей при покупке программного продукта. Пример может использоваться программой при ее активации или запуске.
Лицензионные ключи состоят из прописных букв и цифр, разделенных дефисом «-» и разделенных на фиксированное количество сегментов фиксированного размера.
Обратите внимание, что сгенерированные ключи ограничены прописными буквами и цифрами от 0 до 9. Поля переменной длины дополняются случайными символами для достижения максимальной длины. Поля, длина которых превышает указанную, усекаются.
Ключ шифрования и генерация лицензионного ключа
Алгоритм шифрования представляет собой простой процесс замены. 36 разрешенных символов случайным образом перемешиваются для генерации ключа шифрования. Процесс генерации лицензионного ключа находит положение каждого входного символа в главном ключе и заменяет его символом из той же позиции в ключе шифрования. Для полей переменной длины начальный символ представляет количество символов, необходимых для заполнения поля до указанной максимальной длины («A» = 0, «B» -1 и т.д.). Затем к лицензионному ключу добавляется количество случайных символов перед добавлением зашифрованных данных поля. Символ дефиса вставляется через каждые символы «SegSize» в отображаемом ключе для облегчения ввода пользователем.
Расшифровка лицензионного ключа
При обработке регистрации приложения лицензионный ключ пользователя декодируется для воссоздания исходных полей данных. Их можно использовать для проверки условий лицензии и утверждения или отказа в доступе к самому приложению. Процесс просто меняет роль главного ключа и ключа шифрования. Таким образом, если «A» в позиции 1 мастер-ключа был преобразован в «4» во время шифрования, то «4» в лицензии будет найден в 1-й позиции ключа шифрования и снова заменен на «A» в Мастер ключе.
Тестирование:
1. Определите поля: Введите строки в формате «Имя поля» = «Размер поля». Перед размером поля ставьте букву V, чтобы указать, что это переменная длина. Каждое поле переменной длины будет занимать 1 символ из сгенерированных лицензионных ключей. Сумма размеров + количество полей V должна равняться произведению указанного размера ключевого сегмента на количество сегментов в ключе.
2. Укажите размер ключевого сегмента и количество сегментов на основе определений полей.
3. Сгенерируйте ключ шифрования.
4. Для создания каждого лицензионного ключа введите соответствующие значения имен полей и нажмите кнопку «Сделать лицензионный ключ».
5. Кнопка «Расшифровать» будет использовать данные определения поля и ключ шифрования для преобразования лицензионного ключа обратно в исходные поля входных данных.