A maneira mais comum é fazer com que o programa imponha apenas parte do algoritmo de licença real. Por exemplo, digamos que a licença seja assim: UUUU-VVVV-WWWW-XXXX-YYYY-ZZZZ
. O algoritmo de licença pode exigir que a parte YYYY-ZZZZ
tenha uma estrutura específica. Mas, no que diz respeito ao programa, qualquer parte UUUU-VVVV-WWWW-XXXX
é permitida.
No entanto, o fabricante pode escolher os números de série de forma testável. Por exemplo, UUUU
pode identificar o revendedor, versão ou ID do produto. VVVV-WWWW
pode ser sequencial para emitir várias licenças. Mas a parte XXXX
pode ser baseada em um hash seguro da parte UUUU-VVVV-WWWW
.
Como o hash seguro não é implementado no programa ou testado por ele, ele pode ser mantido completamente secreto. Todas as chaves legítimas terão o hash seguro correto, mas as chaves com um hash seguro inválido, mas uma parte YYYY-ZZZZ
correta funcionará no software, mas deve ter sido gerada por um gerador de chaves.
Normalmente, o programa incorpora parte de sua chave nas coisas. Neste exemplo, provavelmente a parte UUUU-VVVV-WWWW-XXXX-YYY
. Isso é suficiente para dizer de quem é a licença (se era legítima) e se foi gerada por um keygen, mas não o suficiente para usar a licença para executar o software.