¿Qué métodos / bibliotecas / herramientas sugeriría la gente para generar claves de licencia (esas encantadoras cosas AAAAA-AAAAA-AAAAA-AAAAA-AAAAA que pones cuando registras el software)?
¿Hay que tener en cuenta al implementarlos?
(Por el momento, estoy interesado en esto como algo general en lugar de un idioma específico, así que solo indique qué idioma está usando si su solución es específica del idioma).
Esta misma pregunta se hizo en SO y la respuesta aceptada es bastante buena. La esencia general es:
fuente
Mi método preferido es generar 10,000 cadenas de licencia aleatorias, SHA1 (o MD5) las hash o HMAC, e incluir todo o parte de la hash SHA1 / MD5 en el propio ejecutable. Cuando se ingresa una cadena de licencia, simplemente usa código ofuscado para generar el hash de la cadena y compararlo con los de la lista. Si coincide, es una licencia válida. Si tienes pocas licencias, lanza una nueva versión con más cadenas.
Usar solo los primeros 96 bits del hash SHA1 es adecuado. Entonces, 10,000 licencias tomarían menos de 120KB. La generación algorítmica de claves o la creación de un generador de claves sería imposible. La única vulnerabilidad de la que debería preocuparse es la ingeniería inversa o eludir. (O alguien que distribuye su clave válida).
fuente