Número mágico (informática)
Un número mágico en informática se refiere a unos caracteres alfanuméricos que de manera codificada identifican un archivo, generalmente ubicados al comenzar dicho archivo. Su uso está extendido en entornos asociados con Unix y sus derivados, como método alternativo de identificación.
Descripción
Consiste en registrar un "número mágico" dentro de un archivo para así poder identificar su tipo. En un principio, se registraban 2-bytes identificadores al principio del archivo, pero puesto que cualquier secuencia binaria no decodificada puede ser considerada como un número, cualquier característica de un formato de archivo que lo distinguiese podría ser utilizada para identificarlo. Las imágenes GIF, por ejemplo, siempre empiezan con la representación en ASCII de GIF87a o GIF89a, dependiendo del estándar al que pertenezcan. Otros muchos formatos de archivo, en especial los de texto plano, son más difíciles de identificar por este método. Por ejemplo, los archivos HTML, pueden empezar por la cadena <html> (que no se diferencia entre mayúsculas y minúsculas), o para determinados tipos de documentos se emplea la etiqueta <!DOCTYPE, y para los XHTML, el identificador XML empieza con <?xml. En definitiva, los archivos pueden empezar con cualquier texto aleatorio o incluso líneas vacías, pero seguirían siendo HTML.
Ventajas
Este enfoque ofrece mejores garantías para que el archivo sea identificado correctamente, y en ocasiones puede determinar información muy precisa sobre el archivo. Aun así, es sólo útil si la interfaz empleada para acceder al archivo permite al usuario la manipulación sencilla con una variedad de métodos —como oposición al doble clic que automáticamente hace lo "correcto"; ya que suele estar asociado con interfaz de línea de comandos y no con las gráficas. Puesto que el cálculo del "número mágico" puede ser bastante complejo, y habría que analizar cada archivo cada vez para cada una de las posibilidades de "archivo mágico", este enfoque es también bastante ineficiente, especialmente si se listan varios archivos (por el contrario, el método del nombre de archivo y métodos basados en metadatos sólo necesitan contrastar un fragmento de datos con un índice ordenado). Y, como con el ejemplo de HTML, algunos tipos de archivos no pueden ser identificados con este método. Aun así, es el mejor método por el cual un programa puede comprobar si un archivo puede ser procesado por él de forma correcta: aún pudiendo ser, el nombre o los metadatos, alterados independientemente de su contenido, pudiendo ser comprobado con un análisis de número mágico bien diseñado que compruebe corrupciones o tipos de archivos incorrectos.
También, por connotación, como caso especial de números mágicos se refiere a las líneas de shebang en programación de scripts. Pero en este caso, los números mágicos son textos legibles normalmente que especifican a un intérprete de órdenes como trabajar con un archivo.