Sto cercando di creare un CD-KEY univoco da inserire nella confezione del nostro prodotto, proprio come un normale CD-KEY trovato in scatole di software standard che gli utenti usano per registrare il prodotto.Algoritmo per generazione CD-KEY univoca con convalida
Tuttavia, non vendiamo software, stiamo vendendo kit di raccolta del DNA per scopi criminali e medici. Gli utenti riceveranno un kit di raccolta della saliva per posta con il CD-KEY su di esso e useranno tale CD-KEY per creare un account sul nostro sito Web e ottenere i loro risultati. I risultati del test saranno collegati al CD-KEY. Questo è l'unico modo in cui dovremo collegare i risultati ai pazienti. È quindi importante che non fallisca :)
Uno dei requisiti sarebbe che l'elenco di CD-KEYs deve essere sufficientemente "diffuso" a parte in modo che non vi sia alcuna possibilità che qualcuno inserisca un CD-KEY errato e ancora averlo approvato per qualcun altro kit, quindi mescolando due kit. Questo potrebbe costarci migliaia di dollari in responsabilità.
Ad esempio, esso non può essere una sequenza incrementale di numeri come
...
La ragione è che se qualcuno riceve il kit 00002, ma registra come da 000003 incidente, quindi i suoi risultati saranno abbinati a qualcun altro. Quindi deve essere come i numeri delle carte di credito ... A meno che non venga inserita una sequenza valida, le probabilità di colpire casualmente un numero valido sono 1 su un milione ...
Inoltre, vendiamo più di 50.000 kit all'anno a vari fornitori (chi genererà i propri CD-KEY utilizzando il nostro algoritmo), quindi non possiamo mantenere un elenco di tutti i CD-KEY precedentemente emessi per verificare la presenza di duplicati. L'algoritmo deve generare CD-KEY univoci.
Richiediamo inoltre la possibilità di verificare che il CD-KEY sia valido utilizzando un algoritmo di controllo rapido, in modo che possiamo informare l'utente se il codice inserito non è valido. Questo lascia fuori molti algoritmi di hashing o MD5. E non può essere un 128 bit perché, chi vorrebbe prendere quel tempo per digitarlo sullo schermo del computer?
Finora questo è quello che stavo pensando la struttura del CD-KEY finale sarà simile
(codice prodotto 4 char) - (4 char codice rivenditore) - (12 char unica, verificabile CD-KEY)
Es. 384A - gTLD - {4565 - FR54 - EDF3}
Per assicurare l'unicità delle chiavi, ho potuto includere la data corrente (20.090.521) come parte della fonte. Non genereremo chiavi univoche più di una volta alla settimana, quindi questo valore cambia abbastanza spesso allo scopo di un valore iniziale univoco.
Quale possibile algoritmo posso utilizzare per generare le chiavi univoche?
La crittografia non è sicura, se la sicurezza si trova solo nell'algoritmo, che viene tenuto nascosto. :) –
la chiave cd finale verrà crittografata utilizzando un algoritmo di tipo hash con una chiave segreta. –