Estoy tratando de crear una CD-KEY única para poner en la caja de nuestro producto, como una CD-KEY normal en cajas de software estándar que los usuarios usan para registrar el producto.Algoritmo para la generación única de CD-KEY con validación
Sin embargo, no estamos vendiendo software, estamos vendiendo el kit de recolección de ADN para fines criminales y médicos. Los usuarios recibirán un kit de recolección de saliva por correo con el CD-KEY en él y usarán ese CD-KEY para crear una cuenta en nuestro sitio web y obtener sus resultados. Los resultados de la prueba se vincularán con la CD-KEY. Esta es la única forma en que tendremos que vincular los resultados a los pacientes. Por lo tanto, es importante que no falle :)
Uno de los requisitos sería que la lista de CD-KEYs debe estar suficientemente "separada" para que no haya posibilidad de que alguien ingrese una LLAVE de CD incorrecta y todavía lo tiene aprobado para el kit de otra persona, mezclando así dos kits. Eso podría costarnos miles de dólares en responsabilidad.
Por ejemplo, no puede haber una secuencia incremental de los números como
...
La razón es que si alguien recibe el kit de 00002, pero registra como por 000003 accidente, entonces sus resultados se compararán con otra persona. Por lo tanto, debe ser como los números de tarjetas de crédito ... A menos que se ingrese una secuencia válida, sus posibilidades de alcanzar aleatoriamente un número válido son 1 en un millón ...
Además, estamos vendiendo más de 50,000 kits anualmente a varios proveedores (quién generará sus propias CD-KEYS utilizando nuestro algoritmo) por lo que no podemos mantener una lista de todas las CD-KEYS previamente emitidas para verificar la existencia de duplicados. El algoritmo debe generar CD-KEY únicas.
También necesitamos la capacidad de verificar que la CD-KEY sea válida utilizando un algoritmo de verificación rápida, de modo que podamos informar al usuario si el código que ingresa no es válido. Esto deja de lado muchos algoritmos hash o MD5, creo. Y no puede ser de 128 bits porque, ¿quién se tomaría ese tiempo para escribirlo en la pantalla de la computadora?
Hasta el momento esto es lo que estaba pensando la estructura final-CD KEY se vería
(código de producto 4 char) - (código de distribuidor 4 char) - (12 Char único, verificable CD-KEY)
Ej. 384A - GTLD - {4565 - FR54 - EDF3}
Para asegurar la unicidad de las claves, podría incluir la fecha actual (20090521), como parte de la fuente. No generaremos claves únicas más de una vez a la semana, por lo que este valor cambia con suficiente frecuencia a los efectos de un valor inicial único.
¿Qué posible algoritmo puedo usar para generar las claves únicas?
La criptografía no es segura, si su seguridad radica solo en el algoritmo, que se mantiene en secreto. :) –
la clave final del CD se cifrará utilizando un algoritmo tipo hash con una clave secreta. –