Kiedy pierwotnie napisałem tę odpowiedź, zakładałem, że pytanie dotyczyło sprawdzania poprawności kluczy licencyjnych w trybie offline. Większość innych odpowiedzi dotyczy weryfikacji online, co jest znacznie łatwiejsze w obsłudze (większość logiki można wykonać po stronie serwera).
W przypadku weryfikacji offline najtrudniejszą rzeczą jest upewnienie się, że możesz wygenerować ogromną liczbę unikalnych kluczy licencyjnych i nadal utrzymywać silny algorytm, którego nie można łatwo złamać (np. Prosta cyfra kontrolna)
Nie jestem zbyt dobrze zaznajomiony z matematyką, ale uderzyło mnie, że jednym ze sposobów jest użycie funkcji matematycznej, która tworzy wykres
Narysowana linia może mieć (jeśli zastosujesz wystarczająco wysoką częstotliwość) tysiące unikalnych punktów, dzięki czemu możesz generować klucze, wybierając losowe punkty na tym wykresie i w pewien sposób kodując wartości
Jako przykład wykreślimy ten wykres, wybierzmy cztery punkty i zakodujemy w ciąg znaków jako „0, -500; 100, -300; 200, -100; 100,600”
Zaszyfrujemy ciąg znanym i stałym kluczem (okropnie słaby, ale służy to celowi), a następnie przekonwertujemy powstałe bajty przez Base32, aby wygenerować ostateczny klucz
Aplikacja może następnie odwrócić ten proces (base32 na liczbę rzeczywistą, odszyfrować, zdekodować punkty), a następnie sprawdzić, czy każdy z tych punktów znajduje się na naszym tajnym wykresie.
Jest to dość niewielka ilość kodu, który pozwoliłby wygenerować ogromną liczbę unikalnych i poprawnych kluczy
Jest to jednak bardzo duże bezpieczeństwo przez zaciemnienie. Każdy, kto poświęci czas na zdemontowanie kodu, będzie w stanie znaleźć funkcję graficzną i klucze szyfrujące, a następnie naszkicować generator kluczy, ale prawdopodobnie jest to całkiem przydatne do spowolnienia przypadkowego piractwa.