Encontramos la respuesta a este dilema, o por lo menos eso deseamos. Si presentas dudas coméntalo, que para nosotros será un gusto responderte
Solución:
El algoritmo de Luhn es suficientemente bueno para la industria de las tarjetas de crédito…
Como señala RichieHindle, el algoritmo de Luhn es bastante bueno. Detectará (pero no corregirá) cualquier error o transposición (excepto una transposición de 0 y 9).
También podría considerar el algoritmo para los dígitos de control del ISBN, aunque para el ISBN de estilo antiguo, el dígito de control a veces es “X”, lo que puede ser un problema para usted si está utilizando campos de números enteros. El ISBN de nuevo estilo no parece tener ese problema. Wikipedia no entra en las propiedades teóricas del sistema, pero recuerdo haber estudiado los números ISBN en mi curso de teoría de la codificación hace mucho tiempo, así que creo que son bastante buenos 🙂
Sé que es un poco tarde (según las fechas de publicación), pero la primera vez que necesité un algoritmo de número de cheque fue la semana pasada.
Así que revisé más algoritmos y en mi humilde opinión, la mejor solución parece ser el algoritmo Damm. Es simple de implementar y detecta la mayoría de los errores probados. Con la tabla de verificación de dígitos predeterminada, todos los errores de un solo dígito, todos los errores de audición del idioma inglés, todos los errores de transposición adyacentes y casi todos los errores de transposición de salto son detectables.
Para mí solo hubo un problema, ya que necesito calcular el dígito de control no solo de los números sino también de los caracteres. Desafortunadamente para mí, había una regla dada, que el último carácter debe ser un dígito; o mejor dicho, los caracteres fueron asignados por una autoridad de terceros y solo se utilizó una cantidad fija de números como número de fabricante.
Hay muchas formas de transcribir caracteres a números, pero la detección de errores siempre será menor, en comparación con cuando solo se usan números.
Para estos casos se puede utilizar la especificación ISO_6346.
Cuando no exista tal limitación, use las tablas para diferentes tamaños y asigne caracteres y números a los valores de la tabla.
EDITAR: descripción actualizada/corregida, razón agregada para el número de verificación de dígitos para caracteres y tablas agregadas para diferentes tamaños de base.
Recuerda algo, que te brindamos la opción de decir si diste con el resultado.