Quais métodos / bibliotecas / ferramentas as pessoas sugerem para gerar chaves de licença (aquelas adoráveis coisas AAAAA-AAAAA-AAAAA-AAAAA-AAAAA que você coloca ao registrar um software)?
Alguma dica a ser observada ao implementá-las?
(No momento, estou interessado nisso como algo geral, e não específico do idioma; portanto, indique qual idioma você está usando se a sua solução for específica do idioma).
Essa mesma pergunta foi feita no SO e a resposta aceita é muito boa. A essência geral é:
fonte
Meu método preferido é gerar 10.000 seqüências de licença aleatórias, hash SHA1 (ou MD5) ou HMAC e incluir todo ou parte do hash SHA1 / MD5 no próprio executável. Quando uma sequência de licenças é inserida, basta usar o código ofuscado para gerar o hash da sequência e compará-lo com os da lista. Se corresponder, é uma licença válida. Se você tiver poucas licenças, libere uma nova versão com mais seqüências de caracteres.
Usar apenas os primeiros 96 bits do hash SHA1 é adequado. Assim, 10.000 licenças levariam menos de 120 KB. A geração algorítmica de chaves ou a criação de um gerador de chaves seria impossível. A única vulnerabilidade com a qual você precisa se preocupar é engenharia reversa ou desvio. (Ou alguém distribuindo sua chave válida.)
fonte