A+
A-
Números del D.N.I.Anverso

Buscando información sobre los DNI's duplicados que existen en España (si, es increible pero al parecer existen algunos casos de personas diferentes con el mismo DNI). Todos hemos oido alguna vez la leyenda urbana que existe acerca del ultimo numero que aparece por detrás del DNI, y que segun mucha gente es el numero de personas que tienen el mismo nombre y apellidos que nosotros... después de leer este documento, sabrás que eso NO es cierto...

ReversoReverso

Tabla de Contenidos

Introducción

Todos nos hemos fijado alguna vez en los misteriosos caracteres que hay en la parte posterior de nuestro DNI:

Números del D.N.I.Existe un mito que dice que el último dígito de la segunda línea indica el número de personas que tienen el mismo nombre y apellidos que el portador. La finalidad de este documento es demostrar que no es así.

Esta zona del DNI está compuesta por caracteres OCR, es decir, está preparada para ser leída por máquinas. Ese dígito en concreto es sólo un dígito de control para verificar que se ha leído correctamente.

A continuación se van a identificar cada uno de los campos que forman la zona de datos OCR y se va a explicar el algoritmo utilizado para la generación de los dígitos de control.

Identificación de los Campos

La zona de datos OCR del DNI se puede dividir en diversos campos:

Tipo de documentoTipo de documento
Nación
Número de DNI
Dígito de control del campo 3
Relleno
Fecha de nacimiento (AAMMDD)
Dígito de control del campo 6
Sexo (M/F)
Fecha de caducidad
Dígito de control del campo 9
Nacionalidad
Relleno
Dígito de control de los campos 3, 4, 6, 7, 9 y 10 concatenados
Nombre

Cálculo de los Dígitos de Control

Los dígitos de control se generan a partir de otros campos a los cuales se les aplica un algoritmo sencillo. Primero se ha de separar por caracteres, por ejemplo, si el valor del campo es 12345678Z:

1 2 3 4 5 6 7 8 Z

Si alguno de los caracteres es una letra, se ha de cambiar por su valor numérico:

A 0 F 5 K 10 P 15 U 20 Z 25
B 1 G 6 L 11 Q 16 V 21
C 2 H 7 M 12 R 17 W 22
D 3 I 8 N 13 S 18 X 23
E 4 J 9 O 14 T 19 Y 24

Así que tenemos

1 2 3 4 5 6 7 8 25

A estos números se les ha de aplicar el peso 7-3-1, lo que significa que se han de multiplicar por 7, por 3 o por 1 dependiendo de su posición:

1 2 3 4 5 6 7 8 25
7 3 1 7 3 1 7 3 1
--------------------------
7 6 3 28 15 6 49 24 25

A continuación se han de sumar los resultados de todas las multiplicaciones:

7 + 6 + 3 + 28 + 15 + 6 + 49 + 24 + 25 = 163

El dígito de control es el último dígito del resultado de la suma, 3 en este caso.

Implementación del Algoritmo

Aquí se incluye una implementación del algoritmo escrita en el lenguaje de programación C. La función check_digit definida a continuación recibe un parámetro de tipo char * que debe apuntar a una cadena que contiene dígitos y/o letras. Devuelve un int entre 0 y 9 que es el dígito de control de la cadena. En caso de encontrar un carácter no válido, devuelve -1.

#include
int
check_digit(char *s)
{
static int m[3] = { 7, 3, 1 };
int i, n;
for (i = n = 0; s[i] != '



Fuente: bhean.com/modules.php?name=News&file=article&sid=1210

0 comentarios Google+ 0 Facebook

Nos puedes dejar un comentario, una opinión, o tu experiencia sobre este artículo. Queremos que participes, porque aquí tú eres el protagonista.



 
2013 - 2018 Te interesa saber



Política de privacidad




TiS, con tecnología Responsive Web Design y Blogger

Ir a inicio