Domanda

I interroga su come generatori di numeri di serie e il lavoro di convalida. Il mio obiettivo sarebbe quello di generare un numero di serie con cinque parti composto da numeri e lettere solo.

mi piace di codifica come un hobby e non mi definirei un programmatore professionista. Tuttavia, sono molto interessato a come queste funzioni interessanti lavorare tecnicamente per ampliare la mia mente.

Eventuali suggerimenti, esperienze o algoritmi scritti sono apprezzati.

È stato utile?

Soluzione

Brandon Staggs ha scritto un buon articolo su implementazione di un parziale Serial Number sistema di verifica . Gli esempi sono scritti in Delphi, ma potrebbero essere convertiti in altre lingue.

Altri suggerimenti

pubblico / privato coppia di chiavi . Generare numeri di sequenza (10000, 20000, 30000, 40000, ....) che hanno qualche caratteristica identificazione (es divisibile per 10000). Crittografare numero utilizzando la propria chiave privata. Codificare quel valore usando qualche sistema leggibile ( base di 32 o 64 ) e separare i valori in gruppi per rendere più facile per le persone per analizzare. Distribuire il numero di serie codificato con ogni vendita di voi app.

Da qualche parte in app, si ha la chiave pubblica nascosto. Quando un utente immette un numero di serie codificato, prima decodificarlo nuovo al binario. Usare la chiave pubblica per decodificarlo. Verificare che sia divisibile per 10000.

La parte difficile è l'attuazione - si nasconde la chiave pubblica in app in modo che non può essere facilmente sostituito. La scelta di una certa sequenza che si può identificare facilmente, ma non a corto di valori. offuscamento l'applicazione in modo che qualcuno non può facilmente ignorare passato tutto il controllo. ecc ...

Bene, i numeri di serie sono tradizionalmente di serie ... numeri. Così il primo esempio dalla linea di produzione ha sn 0001, allora il prossimo è 0002 e il prossimo è 0003. Penso che la maggior parte delle persone possono capire che algoritmo.

Credo che si sta effettivamente chiedendo le chiavi di prodotto, che utilizzano un meccanismo simile al messaggio di firma a chiave pubblica - la chiave del prodotto è il valore crittografato, il programma ha una chiave pubblica che consente di verificare che la chiave è valida, ma solo il fornitore del software ha la chiave segreta per 'segno' la chiave del prodotto. L'articolo di Wikipedia sulle firme digitali ha il meccanismo generale; l'unica condizione è che per una chiave per essere inserito dall'utente deve essere un po 'più breve di uno PGP.

Se si sono limitati ad un numero di serie molto breve, quindi è improbabile che sia abbastanza grande per memorizzare il risultato di un meccanismo tipico firma, nel qual caso è abbastanza comune basta usare qualche variante del checksum su di esso. Che ha lo svantaggio di essere facile da decodificare - è la sicurezza è perché l'algoritmo è 'segreto', piuttosto che a causa di tutte le proprietà di crittografia. Ogni prodotto avrà un proprio algoritmo, e di solito ottenere incrinato abbastanza rapidamente.

Se avete 5 blocchi di 5 caratteri, avete 36 ^ 25 combinazioni, che è più grande di 2 ^ 128, quindi potrebbe usare uno degli algoritmi di firma digitale standard che genera un po '128, poi convertire tale valore basare 36 .

Un GUID ( "Globally Unique Identifier") potrebbe essere un modo semplice per risolvere questo:

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

GUID contengono 16 byte e sono più comunemente scritti in testo come una sequenza di cifre esadecimali come ad esempio:

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

E la maggior parte dei linguaggi di programmazione dovrebbero essere in grado di generare un GUID con una delle librerie disponibili.

È possibile utilizzare un generatore di numeri casuali e memorizzare le uscite in un database. In caso di richiesta di attivazione, basta controllare se la serie è nel database e segnare il serial come "usato".

Naturalmente, questo ha bisogno di una connessione a internet, ma è bene contro il "comprare una volta, utilizzare molte, molte volte" metodo e, in caso di sostegno a chiamata, è possibile riattivare quella di serie per un altro reinstallazione.

Successivamente modificare:. È inoltre necessario utilizzare per la verifica internet una connessione crittografata e autenticata, come HTTPS uno

Usando il mio Google-Foo, sono arrivato fino a questo articolo:

http://www.mactech.com /articles/mactech/Vol.13/13.02/SerialNumberGenerator/index.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top