Un dígito de control es una forma de verificación de redundancia que se utiliza para detectar errores en números de identificación, como números de cuentas bancarias, que se utilizan en una aplicación en la que, al menos algunas veces, se ingresarán manualmente. Es análogo a un bit de paridad binario que se utiliza para verificar errores en datos generados por computadora. Consiste en uno o más dígitos (o letras) calculados por un algoritmo a partir de los otros dígitos (o letras) en la secuencia ingresada. [1]
Con un dígito de verificación, se pueden detectar errores simples en la entrada de una serie de caracteres (normalmente dígitos), como un solo dígito mal escrito o algunas permutaciones de dos dígitos sucesivos.
Diseño
Los algoritmos de dígitos de control están diseñados generalmente para detectar errores de transcripción humanos . En orden de complejidad, estos incluyen los siguientes: [2]
- errores de letras o dígitos, como l → 1 o O → 0
- errores de un solo dígito, como 1 → 2
- errores de transposición, como 12 → 21
- errores gemelos, como 11 → 22
- errores de transposición de saltos, como 132 → 231
- errores de salto gemelo, como 131 → 232
- errores fonéticos, como 60 → 16 ("sesenta" a "dieciséis")
Al elegir un sistema, se compensa la alta probabilidad de detectar errores con la dificultad de implementación; los sistemas de dígitos de control simples son fáciles de entender e implementar por los humanos, pero no detectan tantos errores como los complejos, que requieren programas sofisticados para su implementación.
Una característica deseable es que el relleno izquierdo con ceros no debe cambiar el dígito de control. Esto permite utilizar números de longitud variable y cambiar la longitud. Si se agrega un solo dígito de control al número original, el sistema no siempre detectará múltiples errores, como dos errores de reemplazo (12 → 34), aunque, por lo general, los errores dobles se detectarán el 90 % de las veces (ambos cambios necesitarían cambiar la salida compensando las cantidades).
Un método de dígito de verificación muy simple sería tomar la suma de todos los dígitos ( suma digital ) módulo 10. Esto detectaría cualquier error de un solo dígito, ya que dicho error siempre cambiaría la suma, pero no detecta ningún error de transposición (cambio de dos dígitos) ya que reordenar no cambia la suma.
Un método un poco más complejo es tomar la suma ponderada de los dígitos, módulo 10, con diferentes pesos para cada posición numérica.
Para ilustrar esto, por ejemplo, si los pesos de un número de cuatro dígitos fueran 5, 3, 2, 7 y el número a codificar fuera 4871, entonces se tomaría 5×4 + 3×8 + 2×7 + 7×1 = 65, es decir, 65 módulo 10, y el dígito de control sería 5, dando 48715.
Los sistemas con pesos de 1, 3, 7 o 9, con pesos de números vecinos diferentes, son ampliamente utilizados: por ejemplo, pesos 31 31 en códigos UPC , pesos 13 13 en números EAN (algoritmo GS1) y los pesos 371 371 371 utilizados en números de tránsito de ruta bancaria de Estados Unidos . Este sistema detecta todos los errores de un solo dígito y alrededor del 90% [ cita requerida ] de los errores de transposición. 1, 3, 7 y 9 se utilizan porque son coprimos con 10, por lo que cambiar cualquier dígito cambia el dígito de control; usar un coeficiente que sea divisible por 2 o 5 perdería información (porque 5 × 0 = 5 × 2 = 5 × 4 = 5 × 6 = 5 × 8 = 0 módulo 10) y, por lo tanto, no detectaría algunos errores de un solo dígito. El uso de diferentes pesos en números vecinos significa que la mayoría de las transposiciones cambian el dígito de control; Sin embargo, como todos los pesos difieren en un número par, esto no captura las transposiciones de dos dígitos que difieren en 5 (0 y 5, 1 y 6, 2 y 7, 3 y 8, 4 y 9), ya que 2 y 5 se multiplican para dar 10.
El código ISBN-10 utiliza en cambio el módulo 11, que es primo, y todas las posiciones numéricas tienen pesos diferentes: 1, 2, ... 10. Este sistema detecta así todos los errores de sustitución y transposición de un solo dígito (incluidas las transposiciones de salto), pero a costa de que el dígito de control sea posiblemente el 10, representado por "X". (Una alternativa es simplemente evitar el uso de los números de serie que dan como resultado un dígito de control "X"). El ISBN-13 utiliza en cambio el algoritmo GS1 utilizado en los números EAN.
Los algoritmos más complicados incluyen el algoritmo de Luhn (1954), que captura el 98% de los errores de transposición de un solo dígito (no detecta 90 ↔ 09) y el algoritmo de Verhoeff (1969), aún más sofisticado, que captura todos los errores de sustitución y transposición de un solo dígito, y muchos errores más complejos (pero no todos). Similar es otro método basado en álgebra abstracta , el algoritmo de Damm (2004), que también detecta todos los errores de un solo dígito y todos los errores de transposición adyacentes. Estos tres métodos utilizan un solo dígito de control y, por lo tanto, no podrán capturar alrededor del 10% [ cita requerida ] de los errores más complejos. Para reducir esta tasa de fallas, es necesario utilizar más de un dígito de control (por ejemplo, la verificación de módulo 97 a la que se hace referencia a continuación, que utiliza dos dígitos de control; para el algoritmo, consulte Número de cuenta bancaria internacional ) y/o utilizar un rango más amplio de caracteres en el dígito de control, por ejemplo letras más números.
Ejemplos
UPC, EAN, GLN, GTIN, números administrados por GS1
El dígito final de un Código de Producto Universal , Número de Artículo Internacional , Número de Ubicación Global o Número de Artículo Comercial Global es un dígito de verificación calculado de la siguiente manera: [3] [4]
- Sume los dígitos en las posiciones impares desde la izquierda (primero, tercero, quinto, etc., sin incluir el dígito de control) y multiplique por tres.
- Agregue los dígitos (hasta pero sin incluir el dígito de control) en las posiciones pares (segundo, cuarto, sexto, etc.) al resultado.
- Divida el resto del resultado por 10 (es decir, la operación módulo 10). Si el resto es igual a 0, utilice 0 como dígito de control y, si no es 0, reste el resto de 10 para obtener el dígito de control.
En el sitio web de GS1 se puede encontrar una calculadora de dígitos de control GS1 y documentación detallada. [5] Otra página de calculadora oficial muestra que el mecanismo para GTIN-13 es el mismo que para el Número de ubicación global /GLN. [6]
Por ejemplo, el código de barras UPC-A de una caja de pañuelos es "036000241457". El último dígito es el dígito de control "7" y, si los demás números son correctos, el cálculo del dígito de control debe dar como resultado 7.
- Suma los dígitos de los números impares: 0+6+0+2+1+5 = 14.
- Multiplica el resultado por 3: 14 × 3 = 42.
- Suma los dígitos de los números pares: 3+0+0+4+4 = 11.
- Suma los dos resultados: 42 + 11 = 53.
- Para calcular el dígito de control se toma el resto de (53 / 10), que también se conoce como (53 módulo 10), y si no es 0, se resta de 10. Por lo tanto, el valor del dígito de control es 7, es decir (53 / 10) = 5 resto 3; 10 - 3 = 7.
Otro ejemplo: calcular el dígito de control para el siguiente alimento "01010101010 x ".
- Suma los dígitos de los números impares: 0+0+0+0+0+0 = 0.
- Multiplica el resultado por 3: 0 x 3 = 0.
- Suma los dígitos de los números pares: 1+1+1+1+1=5.
- Suma los dos resultados: 0 + 5 = 5.
- Para calcular el dígito de control se toma el resto de (5 / 10), que también se conoce como (5 módulo 10), y si no es 0, se resta de 10: es decir, (5 / 10) = 0 resto 5; (10 - 5) = 5. Por lo tanto, el valor x del dígito de control es 5.
ISBN 10
El carácter final de un Número Estándar Internacional de Libro de diez dígitos es un dígito de control calculado de modo que al multiplicar cada dígito por su posición en el número (contando desde la derecha) y tomar la suma de estos productos módulo 11 es 0. El dígito más a la derecha (que se multiplica por 1) es el dígito de control, elegido para que la suma sea correcta. Es posible que deba tener el valor 10, que se representa como la letra X. Por ejemplo, tomemos el ISBN 0-201-53082-1 : La suma de los productos es 0×10 + 2×9 + 0×8 + 1×7 + 5×6 + 3×5 + 0×4 + 8×3 + 2×2 + 1×1 = 99 ≡ 0 (mod 11). Por lo tanto, el ISBN es válido. Las posiciones también se pueden contar desde la izquierda, en cuyo caso el dígito de control se multiplica por 10, para comprobar la validez: 0×1 + 2×2 + 0×3 + 1×4 + 5×5 + 3×6 + 0×7 + 8×8 + 2×9 + 1×10 = 143 ≡ 0 (mod 11).
ISBN 13
El ISBN 13 (en uso desde enero de 2007) es el mismo que el código EAN-13 que se encuentra debajo del código de barras de un libro. Su dígito de control se genera de la misma manera que el UPC. [7]
Asociación Nacional de Desastres
El algoritmo de dígitos de control NOID (NCDA), [8] en uso desde 2004, está diseñado para su aplicación en identificadores persistentes y funciona con cadenas de letras y dígitos de longitud variable, llamadas dígitos extendidos. Se usa ampliamente con el esquema de identificadores ARK y algo con esquemas como Handle System y DOI . Un dígito extendido está restringido a caracteres betanuméricos, que son alfanuméricos menos vocales y la letra 'l' (ell). Esta restricción ayuda a la hora de generar cadenas opacas que es poco probable que formen palabras por accidente y que no contendrán tanto O como 0, o l y 1. Al tener un radix primo de R=29, el repertorio betanumérico permite que el algoritmo garantice la detección de errores de un solo carácter y de transposición [9] para cadenas de menos de R=29 caracteres de longitud (más allá de los cuales proporciona una verificación ligeramente más débil). El algoritmo se generaliza a cualquier repertorio de caracteres con un radix primo R y cadenas de menos de R caracteres de longitud.
Otros ejemplos de dígitos de control
Internacional
- El número SEDOL internacional.
- El último dígito de un código ISSN o número IMO .
- El Número Internacional de Identificación de Valores (ISIN).
- Grupo de Gestión de Objetos FIGI dígito final estándar. [10]
- El último dígito del número de registro CAS internacional.
- Dígitos de control módulo 10 en números de cuentas de tarjetas de crédito , calculados mediante el algoritmo de Luhn .
- También se utiliza en los números KID (número de identificación del cliente) noruegos utilizados en giros bancarios (transferencia de crédito).
- Utilizado en IMEI de teléfonos móviles.
- Último dígito de control en la serialización EAN/UPC del Número de identificación comercial global ( GTIN ). Se aplica a GTIN-8, GTIN-12, GTIN-13 y GTIN-14.
- El dígito final de un número DUNS (aunque está previsto que esto cambie, por ejemplo, el dígito final se elegirá libremente en nuevas asignaciones, en lugar de ser un dígito de control).
- El tercer y cuarto dígito de un número de cuenta bancaria internacional (verificación módulo 97).
- El último dígito de un código de texto estándar internacional .
- El carácter final codificado en una tarjeta de banda magnética es una comprobación de redundancia longitudinal calculada .
En los Estados Unidos
- El décimo dígito del Identificador Nacional de Proveedor para la industria de atención médica de EE. UU.
- El último dígito de un código POSTNET .
- El número CUSIP de América del Norte .
- El último (noveno) dígito del número de tránsito de ruta ABA , un código bancario utilizado en los Estados Unidos.
- El noveno dígito de un número de identificación del vehículo (VIN).
- Los números de identificación de pacientes de Mayo Clinic utilizados en Arizona y Florida incluyen un dígito de control final [ cita requerida ] .
- El undécimo dígito de un número de entrada de Aduanas y Protección Fronteriza .
En América Central
- El Número Tributario de Guatemala (NIT – Número de Identificación Tributaria) basado en el módulo 11.
En Eurasia
- El número del NHS del Reino Unido utiliza el algoritmo módulo 11.
- El número de identificación fiscal español (número de identificación fiscal, NIF) (basado en el módulo 23).
- El Burgerservicenummer (BSN) holandés (identificador nacional) utiliza el algoritmo módulo 11.
- El noveno dígito de un número de Teudat Zehut (documento de identidad) israelí .
- El decimotercer dígito del Número Único de Ciudadano Maestro de Serbia y la ex Yugoslavia (JMBG). (pero no todos, debido a errores o falta de residencia)
- Los dos últimos dígitos del número de identificación turco de 11 dígitos ( en turco : TC Kimlik Numarası ).
- El noveno carácter del número de pasaporte de ganado de la UE de 14 caracteres (ciclos del 1 al 7: consulte Servicio Británico de Movimiento de Ganado ).
- El noveno dígito de un Kennitala (número de identificación nacional) islandés .
- Dígitos de control de módulo 97 en números de cuenta bancarios belgas y serbios . Serbia a veces también utiliza el módulo 11 para los números de referencia.
- El noveno dígito de un número TAJ (número de seguro social) húngaro .
- Para los residentes de la India , el número de identidad único llamado Aadhaar tiene un duodécimo dígito final que se calcula con el algoritmo de Verhoeff . [11]
- La Oficina de Propiedad Intelectual de Singapur (IPOS) ha confirmado un nuevo formato para los números de solicitud de propiedad intelectual registrable (PI, por ejemplo, marcas , patentes , diseños registrados ). Incluirá un carácter de control calculado con el algoritmo Damm . [12]
- El último dígito del número de identificación de ciudadano chino (segunda generación) se calcula mediante el módulo 11-2, como se especifica en la norma china GuoBiao (también conocida como norma nacional) GB11643-1999, que adopta la norma ISO 7064:1983. Se utiliza 'X' si el dígito de verificación calculado es 10.
- El undécimo dígito del Isikukood estonio (código de identificación personal).
- La última letra en las placas de matrícula de vehículos de Singapur .
En Oceanía
- El número de expediente fiscal australiano (basado en el módulo 11).
- El séptimo carácter de un número NHI de Nueva Zelanda .
- El último dígito del número del Sistema de Monitoreo de Tráfico (TMS) de una locomotora de Nueva Zelanda .
Algoritmos
Los algoritmos notables incluyen:
- Algoritmo de Luhn (1954)
- Algoritmo de Verhoeff (1969)
- Algoritmo de Damm (2004)
Véase también
- Suma de comprobación
- Extracción de nueves : comprobación de suma modular similar
- Bit de verificación : equivalente binario
Referencias
- ^ "¿Qué es el dígito de control? - Definición de Techopedia". Techopedia.com . Consultado el 16 de marzo de 2022 .
- ^ Kirtland, Joseph (2001). Números de identificación y esquemas de dígitos de control. Materiales de recursos para el aula. Asociación Matemática de Estados Unidos. Págs. 4-6. ISBN 978-0-88385-720-5.
- ^ "Calculadora de dígitos de control GS1". GS1 US. 2006. Archivado desde el original el 9 de mayo de 2008. Consultado el 21 de mayo de 2008 .
- ^ "Cómo calcular un dígito de control manualmente". GS1.
- ^ "Calculadora de dígitos de control". GS1. 2005. Consultado el 21 de mayo de 2008 .
- ^ "Calculadora de dígitos de control, en el sitio oficial de GS1 US". GS1 US. Archivado desde el original el 2016-11-21 . Consultado el 2012-08-09 .
- ^ "Manual del usuario del ISBN". Agencia Internacional del ISBN. 2005. Archivado desde el original el 29 de abril de 2014. Consultado el 21 de mayo de 2008 .
- ^ Kunze, John A. "noid - Comandos del generador de identificadores opacos agradables". metacpan.org . Archivado desde el original el 2022-05-22 . Consultado el 2022-10-15 .
- ^ David Bressoud, Stan Wagon, "Teoría de números computacionales", 2000, Key College Publishing
- ^ "OpenFIGI: Libere el poder de la eficiencia con simbología abierta". OpenFIGI . Archivado desde el original el 2022-08-09 . Consultado el 2022-10-15 .
- ^ "Tarjeta de identificación única" (PDF) . Geek Gazette . Otoño de 2011. pág. 16. Archivado desde el original (PDF) el 26 de junio de 2014.
- URL alternativa
- ^ Chong-Yee Khoo (20 de enero de 2014). "Nuevo formato para los números de solicitud de propiedad intelectual de Singapur en IPOS". Blog de patentes de Singapur . Cantab IP. Archivado desde el original el 14 de julio de 2014. Consultado el 6 de julio de 2014 .
Enlaces externos
- Números de identificación y esquemas de dígitos de control (una explicación matemática de varios esquemas de dígitos de control)
- Calculadora de dígitos de control UPC, EAN y SCC-14
- Calculadora de dígitos de control GS1