GUID legible por humanos

Estoy escribiendo un pequeño sistema que me permitirá vender la música de mi banda en conciertos generando vales que pueden canjearse por MP3 en nuestro sitio web.

Los comprobantes necesitarán un código que el usuario escriba. El código debe tener las siguientes cualidades:

Algún nivel de legibilidad humana en términos de longitud y contenido, para evitar la frustración del usuario y el error de entrada de datos.Dado un código de cupón, no es trivial adivinar otro código de cupón.

Si uso GUIDs, me preocupa el punto 1. Si uso un entero incremental, me preocupa el punto 2. Tiene que haber un medio feliz entre ellos, ¿verdad? Pensé que tal vez este trabajo ya se había hecho y hay una solución ideal esperándome. A falta de eso, estoy pensando que iré con una cadena alfanumérica aleatoria, o posiblemente solo letras (excluyendo I y O para mayor claridad), y que la aplicación bloquee las direcciones IP que fallan X número de veces, lo que indicaría un posible ataque de fuerza bruta. Si continuara con eso, ¿cuánto tiempo de una cadena y qué valor de X funcionaría, y por qué?

¡Gracias por tu ayuda!

Actualización: no estaba totalmente explícito sobre el método: generaré listas de códigos de cupones para imprimir, luego ingresaré los códigos "vendidos" después de un concierto. Por lo tanto, creo que los elementos como una suma de comprobación no son necesarios, como lo son en las claves de software que no utilizan servidores de validación.

Respuestas a la pregunta(12)

Su respuesta a la pregunta