sábado, 26 de septiembre de 2015

W.P.I.C.




Las combinaciones de las 26 letras internacionales del abecedario tomadas de cuatro en cuatro alcanzan el número de 456.976. La combinatoria fue una cuestión de las matemáticas que estudié en mi quinto curso de bachillerato; ahora no sé en qué curso lo estudiaran los chavales aunque es posible que en ninguno salvo que se dediquen a alguna especialidad técnica. En todo caso, WPIC es, pues, una de las casi medio millón de combinaciones posibles.

Estamos hartos de acrónimos, ya se sabe, esos vocablos inexistentes «… formados por la unión de elementos de dos o más palabras…». En este caso el título de esta entrada responde a las iniciales, en inglés, de un supuesto «Código de Identificación Personal Mundial», o lo que es lo mismo y en inglés, «World Personal Identification Code».

Como cuando un autor está buscando título para uno de sus libros, una de las cuestiones fundamentales hoy en día es saber si lo que estamos pergeñando existe con anterioridad o al menos algo parecido, para lo cual es menester consulta obligada al sr. Google ese, que en un periquete nos devolverá cientos de miles cuando no millones de entradas en internet hablando del asunto. Puesto manos a la obra, me encuentro con que «WPIC» o «W.P.I.C.» existe pero ni por asomo se refiere al tema del que quiero ocuparme. Un instituto canadiense de relaciones matrimoniales, algún instituto norteamericano de carácter médico e incluso una emisora de radio son las páginas más significativas que he logrado encontrar.

Otro asunto es buscar no tanto por el palabro sino por el concepto. En esta era de la globalización sorprende no encontrar nada referido al asunto, salvo un intento recogido en páginas francesas de establecer un código de corte similar para empresas a nivel mundial, pero no para personas, aunque el hecho de que yo no haya encontrado nada no quiere decir que no exista. En todo caso me da igual, ya que mis fines son otros.

Tras cuarenta años y unos cuantos lenguajes de programación de ordenadores utilizados en mi vida profesional y personal, le ha llegado el turno a aprender uno nuevo: Python. No es un lenguaje reciente ya que según reza la Wikipedia fue creado a finales de los años ochenta del siglo pasado en los Países Bajos por Guido van Rossum, con lo que cuenta ya con una antigüedad superior al cuarto de siglo. Mi motivación para, mejor dicho, necesidad de, aprender Python me ha hecho tomar contacto con este lenguaje y he podido realizar a lo largo del pasado verano un par de cursos MOOC disponibles, gratuitos y bastante interesantes que me han dado un baño básico suficiente para entender algo y aproximarme a la consecución de mis fines.

Aficionado como soy a las frases, ya he comentado en otras entradas aquel famoso proverbio chino que dice que «Si lo oigo, lo olvido; si lo veo, lo recuerdo; si lo hago, lo sé». Por ello lo mejor en estos casos es ponerse una meta a alcanzar y no parar hasta conseguirlo, por aquello de que con la parte práctica del asunto asentaremos conocimientos, solventaremos escollos y se nos quedará una base para el futuro.

El desarrollo informatizado que me propuse como ejemplo y que he bautizado como WPIC es tratar de conseguir un código, de ocho posiciones, formado por letras mayúsculas, menos la «O», números del 0 al 9 y las letras minúsculas internacionales de forma que cualquier ciudadano del mundo disponga del suyo de forma unívoca. Para ello he utilizado unos algoritmos sencillos que suponen operaciones lógicas y matemáticas y una serie de 61 caracteres básicos para generar el código, lo que da un número de posibilidades cercano a doscientos billones, si bien no todos los códigos son válidos porque existen ciertos controles internos de verificación. Conviene señalar que es reversible, esto es, que a partir de un código podemos obtener los datos que hemos utilizado para construirlo, que no son otros que el código internacional numérico de país según la tabla ISO-3166-1 y un número identificativo nacional. Como lo mejor es un ejemplo, diremos que para un español, código 724 del país España, con un Documento Nacional de Identidad supuesto de 41.325.627, el WPIC asignado sería «gP44P0lj» o para un supuesto número de identidad 7.523.321 de un alemán, código 276 del país Alemania, el WPIC asignado sería «MLnThv2y».

Ni que decir tiene que esto es una simple elucubración, aunque seguro que en el futuro, si es que no ocurre ya, alguna empresa de esas de la globalización se está planteando la necesidad de este tipo de código además de que a los muchos fisgones, autorizados o no, que hay por la red también les vendría muy bien, pero para implantarlo serían necesarias reuniones al más alto nivel mundial y el empleo de algoritmos de cifrado y criptografía mucho más potentes de los que he empleado yo en este ejemplo, que no deja de ser para andar por casa.

Una cosa que sabía, pero que no recordaba, era que en los mundos de Windows y en el caso particular de un usuario de Google, no se distinguen las mayúsculas y las minúsculas. Con ello, si queremos obtener un correo de Google, un @gmail.com, con nuestro flamante WPIC podemos tener problemas al no distinguirse mayúsculas de minúsculas. Con este planteamiento he dado una vuelta de tuerca al programa de forma que el código pase a tener 10 posiciones pero esté construido solo con los números y las mayúsculas internacionales exceptuando la letra «O» por aquello de su similitud con el número cero.

Para quienes pudieran estar interesados en obtener sus WPIC’s de 8 o 10 posiciones, en el siguiente enlace estará disponible por un tiempo un fichero de tipo «.zip» que contiene varios ejecutables y módulos necesarios. Con expandir este fichero en una carpeta de nuestro ordenador bajo cualquier sistema operativo Windows, y sin tener que instalar nada, dispondremos del programa ejecutable «WPICpython.exe», libre de virus, que voy a decir yo, con el que se pueden calcular los WPIC’s de 8 y 10 posiciones introduciendo el código de país y el número personal que sería equivalente al DNI. español. Mi manejo del lenguaje Python es todavía muy pedestre en lo que se refiere a interfaces gráficas, por lo que este programa ejecuta en modo de ventana de comando de forma muy elemental y con pocas alharacas, pero obtiene lo que vamos buscando.

Por aquello de verificar los resultados, he realizado el mismo programa en otro lenguaje, en este caso Visual Basic, en el que los manejos gráficos son más conocidos por mí aunque todavía no dominados. Está junto al otro en la misma carpeta antes comentada con el nombre «WPICvisualbasic.exe», pero lamentablemente al ejecutarle en su ordenador sin instalación Vd. puede encontrarse que le faltan por cargar determinados módulos denominados DLL’s, con lo cual fallará, salvo que se ponga manos a la obra y registre estos DLL’s en su registro de Windows, cuestión no muy complicada pero tampoco sencilla y que no podemos explicar aquí.

Suerte con sus WPIC’s. Los míos son «oArWv3bz» y «5T08HDL7YQ» en 8 y 10 posiciones respectivamente. ¿Cuál son los suyos? No me los diga, que al ser reversibles podría determinar, siempre que sean correctos, el país y número de identificación utilizados, aunque por el momento y hasta que no se globalice «solo podría hacerlo yo» ya que «este» WPIC es mío y solo mío…