¿Debo cambiar mi clave de licencia de salida de la salida MD5 pura a un común código de tipo “-AAAA-ZZZZ XXXX”?

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

Pregunta

Estoy creando un sencillo sistema de clave de licencia para "mantener la gente honesta". No me importa la criptografía sobre todo estrictas.

Si se ponen a molestado con las limitaciones de demostración, que va a mi sitio web de registro, pago y me dan su correo electrónico. Yo les doy una clave de licencia.

Me quedo con las cosas muy simple, por lo que:

license_key = md5(email + "Salt_String");

Tengo PHP y C # funciones corren el mismo algoritmo y reciben la misma clave.

El problema es que la salida de estas funciones es una cadena de 32 caracteres como:

A69761CF99316358D04771C5ECFCCDC5

¿Cuál es potencialmente difícil recordar / tipo. Sí, sé de copiar / pegar, pero quiero que sea muy fácil para todos los clientes de pago para desbloquear el software.

En caso de alguna manera me convierto esta larga cadena en algo más corto?

Digamos que yo uso sólo los primeros 6 dígitos, por lo que: A69761

Obviamente, hay manera más colisiones criptográficas en eso, sino que van a importar en absoluto en el uso práctico?

¿Alguna otra idea para hacer la cosa más / tipificable legible por humanos?

¿Fue útil?

Solución

Para dejó 6-10 símbolos será suficiente - el usuario de todas formas no va a ser capaz de adivinar el código, y sería fácil de escribir en. También sería buena idea para registrar cada licencia en el servidor, de modo que usted será capaz de comprobar que el usuario es realmente honesto, y no dio una clave de licencia a otra persona.

Otros consejos

En mi experiencia, pidiendo al usuario escribir o copiar / pegar un código de 30 caracteres de hecho conduce a clientes frustrados. No es que es tan difícil. Es simplemente un obstáculo que las personas no se preocupan por.

La solución que he usado para mi negocio es tener juicio separado y descargas compradas. Para obtener su copia con licencia, los tipos de clientes en su dirección de correo electrónico y un ID de usuario corto en el formulario de descarga. Ingresar sólo el correo electrónico reenvía automáticamente el ID de usuario. Usted no pidió por esto, pero un sistema para buscar automáticamente cualquier código de las necesidades de los clientes es aún más importante que tener un sistema simple. El sistema de descarga mira hacia arriba los detalles del usuario en la base de datos y sirve una SetupSomeProductCustomerName.exe que tiene la licencia del usuario incrustado en él. Esta configuración instala copia con licencia del cliente sin necesidad de conexiones de identificación o servidores adicionales.

Este sistema ha funcionado muy bien para nosotros. El cliente sólo tiene un archivo de copia de seguridad y no hay números de serie a perder para asegurarse de que puede volver a instalar el software en el futuro.

Dicho esto, si usted prefiere utilizar un sistema que utiliza un hash unidireccional, sólo tiene que utilizar un algoritmo que genera un hash más pequeño. P.ej. CRC-32 resultados en 8 dígitos hexadecimales.

No hay ningún punto en el hash de ser criptográficamente seguro. Una galleta simplemente caminar a través de su código, copie todo el bloque de código que muta el correo electrónico en la clave de licencia y pasta que en su keygen. Luego se puede generar claves de licencia para cualquier dirección de correo electrónico. Ellos pueden hacer eso sin tener en cuenta la complejidad de su algoritmo de hash es.

Si desea evitar esto, es necesario utilizar el cifrado de clave pública, lo que da como resultado claves que son demasiado tiempo para escribir. Si ir por ese camino, ya sea que usted necesidad de molestar a sus clientes con largas claves para pegar en o archivos clave separadas, o utilizar el sistema de descarga personalizada que he descrito anteriormente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top