Когда я изначально писал этот ответ, предполагалось, что вопрос касался «автономной» проверки лицензионных ключей.Большинство других ответов касаются онлайновой проверки, с которой значительно проще справиться (большую часть логики можно выполнить на стороне сервера).
При автономной проверке самое сложное - это обеспечить создание огромного количествауникальные лицензионные ключи и все еще поддерживают сильный алгоритм, который нелегко компрометировать (такой как простая контрольная цифра)
Я не очень хорошо разбираюсь в математике, но меня поразило, что один из способов сделать это -используйте математическую функцию , которая строит график
Построенная линия может иметь (если вы используете достаточно точную частоту) тысячи уникальных точек, поэтому вы можете генерировать ключи, выбирая случайные точки на этомграфик и кодирование значений некоторым образом
В качестве примера, мы построим этот график, выберем четыре точки и закодируем в строку как «0, -500; 100, -300; 200, -100; 100,600 "
Мы зашифруем строку с помощью известного и фиксированного ключа (ужасно слабый, но он служит цели), затем выполнимПолучите итоговые байты через Base32 , чтобы сгенерировать окончательный ключ
Затем приложение может обратить этот процесс в обратном порядке (от base32 к действительному числу, расшифровать, декодировать точки), а затем проверить каждую из этих точек:на нашем секретном графике.
Это довольно небольшой объем кода, который позволяет генерировать огромное количество уникальных и действительных ключей.
Тем не менее, он очень надежен для безопасности.Любой, кто потратит время на дизассемблирование кода, сможет найти графическую функцию и ключи шифрования, а затем смоделировать генератор ключей, но это, вероятно, весьма полезно для замедления случайного пиратства.