viernes, 15 de septiembre de 2006

El D.N.I. y Velneo

Leyendo un día microsiervos encontré en la sección de leyendas urbanas un post sobre el DNI. Trataba sobre la leyenda que decía que el número que aparece en la parte de atrás del DNI es el número de personas que se llaman igual que tú. Siguiendo los enlaces encontré la página de Josep Portella Florit donde explicaba el proceso que siguió hasta descifrar la parte de atrás del DNI.

Decidí en ese momento hacer la adaptación a Velneo del proceso y generar una web de coña que generase tu parte de atrás del DNI.

Veamos cómo es esa parte de atrás, algo parecido a esto:

IDESP12345678Z3***************
7410150M0903226ESP***********4
DE*TAL*Y*CUAL**FULANITO*******

Y qué es esto? Por campos,

[ID][ESP][12345678Z][3][***************]
[741015][0][M][090322][6][ESP][***********][4]
[DE*TAL*Y*CUAL][**][FULANITO][*******]

[ID] - Campo que indica el tipo de documento
[ESP] - Campo que indica que el documento es de España
[12345678Z] - Campo con el DNI letra incluida
[3] - Dígito de control del DNI letra incluida
[***************] - Relleno
[741015] - Fecha de nacimiento en formato AAMMDD
[0] - Dígito de control de la fecha de nacimiento
[M] - Sexo
[090322] - Fecha de caducidad del DNI
[6] - Dígito de control de la fecha de caducidad
[ESP] - Campo que indica que el documento es de España
[***********] - Relleno
[4] - Dígito de control de la cadena formada por el DNI letra incluida, su dígito de control, la fecha de nacimiento, su dígito de control, la fecha de caducidad y su dígito de control
[DE*TAL*Y*CUAL] - Apellidos
[**] - Separador
[FULANITO] - Nombre
[*******] - Relleno

Para el cálculo de los rellenos debemos tener en cuenta que la longitud de cada línea es de 30 caracteres.

El cálculo del dígito de control se reduce a tomar una cadena de longitud variable ( DNI, fecha, churro ), separarla caracter por caracter, sustituir los caracteres alfabéticos por su valor numérico según la fórmula (valorASCII - 65), de forma que la A sea 0, la M 12 y la Z 25, y luego aplicar los pesos 7-3-1 a los caracteres de la cadena, obtener la suma total y quedarnos con el último dígito de la suma.

Por pasos, tomando por ejemplo el DNI [12345678Z]

separamos por caracteres [ 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - Z ]

sustituimos la letra [ 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 25 ]

aplicamos los pesos 7-3-1 [ 1*7 - 2*3 - 3*1 - 4*7 - 5*3 - 6*1 - 7*7 - 8*3 - 25*1 ]

sumamos [ 7 + 6 + 3 + 28 + 15 + 6 + 49 + 24 + 25 ] = 163

nos quedamos con el último dígito [3]

y ya tenemos nuestro dígito de control. Así con todos.

La duda que me queda es el tema del sexo. No interviene en el cálculo de ningún dígito de control pero sufre una transformación que creo es M = Hombre, F = Mujer, aunque en el campo del DNI dedicado al sexo pone otra cosa. No sé si tendrá algo que ver también la comunidad autónoma o no.

Ah! Se me olvidaba comentarlo, al componer la última línea debereis tener en cuenta que si en el Nombre o Apellidos aparecen espacios, estos deberán ser sustituidos por [*]

No hay comentarios:

Publicar un comentario