El día 5 de diciembre de 2018 se aprobó la nueva ley de Protección de Datos Personales y garantía de los derechos digitales. Entre otros temas nos obligan a que el dni se vea de forma parcial en las noticaciones por medio de anuncios o publicaciones de actos adminitrativos. Cito la disposición adicional séptima:
«Disposición adicional séptima. Identificación de los interesados en las notificaciones por medio de anuncios y publicaciones de actos administrativos.
1. Cuando sea necesaria la publicación de un acto administrativo que contuviese datos personales del afectado, se identificará al mismo mediante su nombre y apellidos, añadiendo cuatro cifras numéricas aleatorias del documento nacional de identidad, número de identidad de extranjero, pasaporte o documento equivalente. Cuando la publicación se refiera a una pluralidad de afectados estas cifras aleatorias deberán alternarse.
Cuando se trate de la notificación por medio de anuncios, particularmente en los supuestos a los que se refiere el artículo 44 de la Ley 39/2015, de 1 de octubre, del Procedimiento Administrativo Común de las Administraciones Públicas, se identificará al afectado exclusivamente mediante el número completo de su documento nacional de identidad, número de identidad de extranjero, pasaporte o documento equivalente.
Cuando el afectado careciera de cualquiera de los documentos mencionados en los dos párrafos anteriores, se identificará al afectado únicamente mediante su nombre y apellidos. En ningún caso debe publicarse el nombre y apellidos de manera conjunta con el número completo del documento nacional de identidad, número de identidad de extranjero, pasaporte o documento equivalente.
2. A fin de prevenir riesgos para víctimas de violencia de género, el Gobierno impulsará la elaboración de un protocolo de colaboración que defina procedimientos seguros de publicación y notificación de actos administrativos, con la participación de los órganos con competencia en la materia.»
En las listas del Foro Técnico de la Comunidad RedIRIS el compañeros Marc Vives de la universidad Pompeu Fabra nos aconseja un algoritmo para un procedimiento que nos podría valer para cumplir este cometido , aunque no tiene que ser el único siempre que se cumpla con esta disposición adicional. El algoritmo sugerido y mejorable, ya que no contempla pasaportes, es el siguiente:
»
String.prototype.replaceAt=function(index, replacement) {
return this.substr(0, index) + replacement+ this.substr(index + replacement.length); }
var dni = this.getField("DNI").value; var cadena="TRWAGMYFPDXBNJZSQVHLCKET"; var posicion = dni % 23; var letra = cadena.substring(posicion,posicion+1); var dni_string = dni.toString();
var masks= Array("00110110","10001011","10011100","10110100","01111000", "11000101","01100011","10010011","10010101","11100100", "00111001","01011001","11000110","01101010","10111000", "11010100","10101100","10100101","10100110","11010001", "01010110","00011110","00101011","01100101","10001110", "00110101","10101001","00010111","01100110","10110010", "01110100","01011100","11100010","01101100","00111010", "01110001","11100001","01000111","11001001","11000011", "01101001","10011010","11011000","01010011","11001010", "10000111","11101000","10110001","10001101","10100011", "01001110","01011010","11010010","01110010","00011101", "00101110","01001011","01010101","11001100","00100111", "10011001","01001101","00101101","10010110","00111100",
"00011011","00110011") ; var mask = masks[dni % 67];
var dni_enmascarado = dni_string; var i;
for (i=0; i<8; i++) if (mask[i] == "0") dni_enmascarado = dni_enmascarado.replaceAt(i,"*");
this.getField("NIF").value = dni_string.substring(0,2)+"."+dni_string.substring(2,5) +"."+dni_string.substring(5,8)+"-"+letra; this.getField("MASK").value = mask; this.getField("NIF_enmascarado").value = dni_enmascarado.substring(0,2)+"."+dni_enmascarado.substring(2,5) +"."+dni_enmascarado.substring(5,8)+"-*";
»