A título de curiosidade: Como estão os números de série gerados? Sugestões, Algoritmos? [fechadas]

StackOverflow https://stackoverflow.com/questions/715251

Pergunta

I perguntando sobre como série geradores de números e trabalho validador. Meu objetivo seria gerar um número de série com cinco partes que consiste somente números e letras.

Gosto de codificação como um hobby e não me chamaria um programador profissional. No entanto, estou muito interessado em saber como essas funções interessantes trabalhar tecnicamente para ampliar minha mente.

Todas as dicas, experiências ou algoritmos escritos são apreciados.

Foi útil?

Solução

Brandon Staggs escreveu um bom artigo sobre a implementação de uma parcial do número de série sistema de verificação . Os exemplos são escritos em Delphi, mas poderia ser convertida em outros idiomas.

Outras dicas

Obter-se um pública / chave par privado. Gerar números de sequência (10000, 20000, 30000, 40000, ....) que tem alguma característica de identificação (por exemplo divisível por 10 mil). Criptografar esse número usando a sua chave privada. Encode esse valor usando algum sistema legível ( base de 32 ou 64 ) e separar os valores em grupos para tornar mais fácil para as pessoas para analisar. Distribua o número de série codificado com cada venda que você aplicativo.

Em algum lugar no aplicativo, você tem a chave pública escondido. Quando um utilizador introduz um número de série codificada, primeiro descodificá-lo de volta para o sistema binário. Use a chave pública para decifrá-lo. Verificar se é divisível por 10000.

A parte mais difícil é na implementação - escondendo a chave pública no aplicativo para que ele não pode ser substituído facilmente. Escolhendo uma sequência que você possa identificar facilmente, mas não ficar sem valores. ofuscando o aplicativo para que alguém não pode facilmente pular toda a seleção. etc ...

Bem, os números tradicionalmente de série são de série ... números. Assim, o primeiro exemplo da linha de produção tem sn 0001, em seguida, a próxima é 0002 eo próximo é 0003. Eu acho que a maioria das pessoas pode trabalhar fora que o algoritmo.

Eu acho que você está realmente perguntando sobre chaves de produto, que usam um mecanismo similar ao chave pública assinatura de mensagens - a chave do produto é o valor criptografado, o programa tem uma chave pública que lhe permite verificar se a chave é válida, mas apenas o fornecedor de software tem a chave secreta para 'sinal' a chave do produto. O artigo Wikipedia em assinaturas digitais tem o mecanismo geral; A única condição é que para uma chave para ser digitado pelo usuário que tem que ser um pouco mais curto do que um PGP.

Se você está restrito a um número de série muito curta, então é improvável que seja grande o suficiente para armazenar o resultado de um mecanismo de assinatura típica, caso em que é bastante comum usar apenas alguma variante da soma de verificação sobre ele. Isso tem a desvantagem de ser fácil de fazer engenharia reversa - é a segurança é porque o algoritmo é 'segredo' e não devido a quaisquer propriedades criptográficas. Cada produto teria seu próprio algoritmo, e eles costumam ficar rachado muito rapidamente.

Se você tem 5 blocos de 5 caracteres, você tem 36 ^ 25 combinações, que é maior do que 2 ^ 128, então poderia usar um dos algoritmos de assinatura digital padrão que gera uma de 128 bits, em seguida, converter esse valor para base 36 .

Um GUID ( "Global Unique Identifier") poderia ser uma maneira fácil de resolver isso:

http://en.wikipedia.org/wiki/Globally_Unique_Identifier

Guids conter 16 bytes e são mais comumente no texto escrito como uma sequência de dígitos hexadecimal, tal como:

3F2504E0-4F89-11D3-9A0C-0305E82C3301

E a maioria das linguagens de programação deve ser capaz de gerar um GUID com uma das bibliotecas disponíveis.

Você pode usar um gerador de números aleatórios e armazenar as saídas em um banco de dados. Em caso de solicitação de ativação, basta verificar se a série está no banco de dados e marcar a série como "usado".

Claro, isso precisa de uma conexão à internet, mas é bom contra a "comprar uma vez, usar muitas e muitas vezes" método e, em caso de suporte de chamada, você pode reativar que série para outra reinstalação.

Editar Mais tarde:. Você também deve usar para a internet verificação de uma conexão criptografada e autenticada, como um HTTPS

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top