Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 21

Capítulo 4

Dialogar con ceros y unos


El descifrado de Enigma y la invención del Colossus nos dejaba a las puertas de la mayor
revolución de las comunicaciones que ha conocido la humanidad: la computación
moderna. Este gigantesco salto adelante se apoyó en buena parte en el desarrollo de
un sistema de codificado que permitió establecer comunicaciones eficaces y rápidas
entre una vasta red articulada alrededor de dos agentes fundamentales: los ordenadores
y sus usuarios, e decir, nosotro .Ya no hablamo aquí sólo de seguridad en el sentido
criptográfico, sino en un sentido más amplio que abarca también nociones de fiabilidad
y eficiencia.
En la base de esta revolución tecnológica se encuentra el istema binario. Este sen-
cillísimo código formado por dos caracteres, el Oy el 1, es el más usado en informática
por su capacidad de expresar funciones lógicas mediante la que interaccionar con los
circuito electrónicos de ordenadores y otros aparatos. Cada Oy cada 1 se denomina bit
(término derivado del inglé binary digit, es decir, «dígito binario»), Una buena analogía
ería decir que el sistema binario es la lengua vernácula de los ordenadores.

El código ASCII
Una de las muchas aplicaciones del istema binario es una familia particular de caracteres
di eñados de tal forma que cada caracter tenga una longitud de 8 bits (1 byte).
Estos caracteres, denominado aifimwlléricos, son el conjunto de signos básicos
empleados en la comunicación convencional, y e le denomina códigoA CIl (siglas
de American Standard Code for Irifomlation lnterchange o «Código Estándar Americano

MEMORY BYTES

La memoria o capacidad de almacenamiento de un ordenador y, en general, de toda máquina


se mide en múltiples de bytes.
Kilobyte (KB): 1.024 bytes Gigabyte (GB): 1.073.741.824 bytes
Megabyte (MB): 1.048.576 bytes Terabyte (TB): 10.99.511.627.776 bytes

77
DIALOGAR CON CEROS Y UNOS

para Intercambio de Inforrnación»). El número de caracteres del código ASCII es


256, cifra que resulta de todas las formas posibles de ordenar de modo diferente un
conjunto de 8 ceros o uno, es decir: 28 = 256.
El código ASCII e el que permite la comunicación textual entre el usuario y
el ordenador. Cuando se teclea un carácter alfanumérico, el ordenador lo traduce a
bytes, es decir, a una cadena de ocho bits. Así, por ejemplo, al escribir la letra A, el
ordenador entiende 0100 000l.
La relación entre valores binarios y decimale de los caracteres ASCII más co-
múnmente empleado en las tareas diaria (26 letras mayúsculas, 26 minúscula, 10
dígito numéricos, 7 signos de punruación y algunos caracteres especiales) se mue tra
en la tabla siguiente:

TABLA ASCII
Carácter Binario Dec. Carácter Binario Dec. Carácter Binario Dec.
00100000 32 @ 01000000 64 01100000 96
! 00100001 33 A 01000001 65 a 01100001 97
.. 00100010 34 B 01000010 66 b 01100010 98
# 00100011 35 e 01000011 67 e 01100011 99
$ 00100100 36 O 01000100 68 d 01100100 100
% 00100101 37 E 01000101 69 e 01100101 101
& 00100110 38 F 01000110 70 f 01100110 102
00100111 39 G 01000111 71 9 01100111 103
( 0010 1000 40 H 01001000 72 h 01101000 104
) 00101001 41 I 01001001 73 i 01101001 105
* 00101010 42 J 01001010 74 j 01101010 106
+ 00101011 43 K 01001011 75 k 01101011 107
00101100 44 l 01001100 76 I 01101100 108
- 00101101 45 M 01001101 77 m 01101101 109
00101110 46 N 01001110 78 n 01101110 110
/ 00101111 47 O 01001111 79 o 01101111 111
O 0011 0000 48 P 0101 0000 80 P 01110000 112
1 00110001 49 Q 0101 0001 81 q 01110001 113
2 0011 0010 50 R 01010010 82 r 01110010 114
3 00110011 51 S 01010011 83 s 01110011 115
4 0011 0100 52 T 01010100 84 t 01110100 116
5 00110101 53 U 01010101 85 u 01110101 117
6 00110110 54 V 01010110 86 v 01110110 118
7 00110111 55 W 01010111 87 w 01110111 119
8 0011 1000 56 X 0101 1000 88 x 01111000 120
9 00111001 57 Y 0101 1001 89 Y 01111001 121

78
DIALOGAR CON CEROS Y UNOS

Carácter Binario Dec. Carácter Binario Dec. Carácter Binario Dec.


0011 1010 58 Z 0101 1010 90 z 01111010 122
0011 1011 59 [ 01011011 91 { 0111 1011 123
< 0011 1100 60 \ 01011100 92 I 0111 1100 124

= 00111101 61 1 0101 1101 93 } 0111 1101 125


> 0011 1110 62 1\
0101 1110 94 - 01111110 126
? 0011 1111 63 - 0101 1111 95

En el caso de teclear un texto como «GOTO 2», muy típico de la programación


básica, el ordenador traducirá los caracteres a la secuencia binaria correspondiente:

Palabra Espacio
G O T O 2
tecleada en blanco

Traducción
al lenguaje 01000111 01001111 01010100 01001111 00100000 00110010
del ordenador

El ordenador implernenrará, pues, la secuencia

010001110100111101010100010011110010000000110010.

El sistema hexadecimal
El sistema hexadecimal es un segundo código de notable importancia en el ámbito
de los ordenadores. Se trata de un sistema de numeración que trabaja con dieciséis
dígitos único (de ahí «hexadecimal»), a diferencia del habitual, que trabaja con diez
(sdecimal»). El sistema hexadecimal, podría decirse, es el «segundo idioma» del orde-
nador después del binario. ¿Por qué? Recordemos que la unidad básica de memoria
de lo ordenadore ,el byte, está compuesto por ocho bits, lo que arroja hasta 2S = 256
combinacione diferentes de ceros y uno. Obsérvese que 28 = 24 X 24 = 16x 16.Es
decir, que la combinación de dos caracteres hexadecimales equivale a 1 byte. Los
dieciséis dígitos del sistema hexadecimal son los tradicionales 0, l , 2, 3, 4, 5, 6, 7,
8,9, y seis más e tablecidos por convenio: A, B, e, o, E, F. Para contar en sistema
hexadecimal se procede de modo siguiente:

Del O al 15: 0,1,2,3,4,5,6,7,8,9 A,B, e, O,E, F.


Del 16 al 31: 10, 11, 12, 13, 14, 15,16,17,18,19, lA, lB, le, 10, lE, lF.
Del 32 en adelante: 20, 21, 22, 23, 24, 25, 26,27,28,29, 2A, 2B, zc ...

79
DIALOGAR CON CEROS Y UNOS

leal (e:)
didón Ver Favoritos Herramientas Ayuda

[) X 19 [Sr
- -
Adelal"te Arriba Cortar Copiar Pegar Eliminar Deshacer Vistas

c:\

del sisterne ~-- -:1 9c20fcbd92129214229SSac31 a Archivos de program

tar el cootendo de esta


ad
gar o quitar programas MSOCache Progr am Files

ar archivos o carpetas

La carpeta del extremo superior izquierdo la ha generado el ordenador de manera automática.


Su extraño nombre es un número hexadecimal.

A diferencia del código binario, el hexadecimal no di tingue entre mayúsculas y


minúsculas. La correspondencia entre binario y hexadecimal de los 16 dígitos únicos
de este segundo sistema e la iguiente:

Binario Hexadecimal

0000 O
0001 1

0010 2
0011 3
0100 4
0101 5

0110 6
0111 7

1000 8
1001 9
1010 A

1011 B

1100 e
1101 D

1110 E
1111 F

80
DIALOGAR CON CEROS Y UNOS

Para el paso de binario a hexadecimal se agrupan los bits de 4 en 4 desde la


derecha y se completa la conversión según la tabla superior. Si el número de dígitos
binarios no es múltiplo de -+ se completa la diferencia con ceros a la izquierda. Para el
paso de hexadecimal a binario e convierte cada dígito hexadecimal a su equivalente
en binario como en el ejemplo siguiente.

9F216 es la notación formal de un número hexadecimal (se indica así mediante


el subíndice 16).
Tengamos en cuenta la correspondencia:

9 F 2
1001 1111 0010

así, 9F216= 1001111100102 (nótese el ubíndice 2, que indica que el número está
expresado en sistema binario).

Hagamos ahora el proceso contrario: 11101001102 tiene 10 dígitos. Por tanto,


completaremos el número con dos cero a la izquierda para así contar con 12 digitos
y poderlos agrupar de 4 en 4.
Convertimos:

11101001102 =0011 1010 01102 =3A616•

¿Cuál es la equivalencia entre caracteres hexagecimales y ASCII? Cada carácter


ASCII contiene 8 bits de información (= 1 bytej.Iuego S caracteres ASCII conten-
drán 40 bits (5 bytes) y, como un carácter hexadecimal contiene 4 bits, tendremos
que 5 caracteres ASCII son 10 caracteres hexadecimales,
Veamos un ejemplo de codificación de una frase en código hexadecimal; para el
caso, la frase «Ediciones RBA».

1) Traducimos «Ediciones RBA»> a su versión binaria mediante el estándar


ASCII.
2) Agrupamos los dígito de 4 en 4 (si la longitud no es múltiple de 4, se añaden
ceros a la izquierda).
3) Se consulta la tabla de conversión de binario a hexadecimal y e procede a
traducido.

81
DIALOGAR CON CEROS Y UNOS

Mensaje E d i c i o n e s

Equivalenoa
binaria según 01000101 01100100 01101001 01100011 01101001 01101111 01101110 01100101 01110011 001‫סס‬000
ASCII

Traducción a
45 64 69 63 69 6F 6E 65 73 20
hexadecimal

Mensaje (cont.) R B A

Equivalencia binaria según ASCII 01010010 01000010 01000001

Traducción a hexadecimal 52 42 41

La fra e «Ediciones RBA~~se codifica en hexadecimal, ahora ya sin mayúsculas


ni minúsculas, como:

4564696369 6F 6E 65 73 20 52 42 41.

Sistemas de numeración y cambios de base

De un sistema numérico de 11 dígitos se dice también que está en base 11. Las mano hu-
manas po een diez dedos, y es ésa probablemente la razón de por qué se inventó el sistema
numérico decimal: el conteo se realizaba con ellos. Un número decimal, como el 7392,
representa una cantidad igual a 7 millares más 3 centenas más 9 decenas más 2 unidades,
Millares, centenas, decenas y unidades son potencias de la base del sistema numérico; en
este caso, de 10. El número 7392, por tanto, podría expresarse como:

Por convenio, se escriben únicamente los coeficientes. Además del sistema decimal
existen muchos otros sistemas de numeración (de hecho, su número es potencialmente
infinito). En este volumen hemos prestado especial atención a dos: el binario, de base 2,
y el hexadecimal, de base 16. En un istema binario de numeración los coeficientes ólo
tienen dos valores posibles: Oy 1. Los dígitos de los número binarios son coeficientes
de potencias de 2. Así, el número 110112 puede e cribir e también como

82
DIALOGAR CON CEROS Y UNOS

Si operamos la expresión a la derecha de la igualdad obtenemos 27, que es la


forma decimal del número binario considerado. Para el proceso inverso se divide
sucesivamente el número decimal entre 2 (la base del binario) y se anotan los restos
hasta obtener un cociente O. El número binario tendrá el último cociente como
primer digito y le seguirán los restos a partir del último obtenido. Con el fin de
visualizar el proceso e cribiremos el número 76 en binario.

76 dividido entre 2 tiene cociente 38 y resto O.


38 dividido entre 2 tiene cociente 19 y resto O.
19 dividido entre 2 tiene cociente 9 y resto 1.
9 dividido entre 2 tiene cociente 4 y resto 1.
4 dividido entre 2 tiene cociente 2 y resto O.
2 dividido entre 2 tiene cociente 1 y resto O.

En consecuencia el número 76 escrito en sistema binario será lOO11002.Este


resultado puede comprobarse en la tabla ASCII anterior (téngase en cuenta que en
la casilla correspondiente se visualiza un O de más al principio como resultado de la
adición de ceros a la izquierda mencionada con anterioridad). La conversión de una
cantidad expresada en un si tema de numeración a otro se conoce como «cambio
de base) de la cantidad en cuestión.

Códigos contra la pérdida de información


Los distintos códigos antes señalados tienen por objetivo habilitar comunicaciones
seguras y efectivas entre ordenadores y programas, por un lado, y los usuarios, por
otro. Pero este lenguaje debe apoyarse en una teoría general de la información que
siente las bases del proceso de comunicación mismo. El primer paso para una teoría
de este tipo es tan básico que seguramente ni siquiera se nos ocurriría: cómo medir
la información.
Una frase del estilo «el adjunto pesa 2 Kb» concentra una larga serie de geniales
intuiciones cuyo arranque es un artículo en dos partes publicado en 1948 por el
ingeniero norteamericano Claude E. Shannon y titulado «Una teoría matemática
de la comunicación). En este artículo seminal, Shannon propuso una unidad de
medida para la cantidad de información que bautizó como bit. El problema general
que originó el trabajo de Shannon era uno que a los lectores de este volumen ya
debe resultarles familiar: ¿Cuál es el mejor modo de codificar un mensaje para evitar

83
DIALOGAR CON CEROS Y UNOS

e! deterioro de la información durante la transmi ión? Shannon concluyó que era


imposible definir una codificación que impidiera en todos los casos la pérdida de
información; es decir, que esta última se deteriora de forma irremediable. Esta alec-
cionadora conclusión no detuvo los esfuerzos por definir estándares de codificación
que si bien no pueden impedir dicho deterioro, aseguren al menos los máximos
niveles posibles de fiabilidad e integridad.
En una transmisión digital de información, e! mensaje, una vez generado por
e! emisor (que bien puede er un agente no humano, es decir, una computadora u
otro dispositivo) e codifica en sistema binario y entra en un canal de comunica-
ción, e! cual estará integrado por los ordenadores de emisor y receptor y e! canal
propiamente dicho físico (cable) o incorpóreo (ondas, luz ...). El viaje por e! canal es
e! proceso más delicado, puesto que e! mensaje se puede ver sometido a toda clase
de interferencias: por cruzamiento de señale , por cambios de temperatura en los
soportes físicos, bajadas de tensión que afectan a estos mismos soportes, etc. Estas
interferencias se denominan técnicamente ruidos.
Para minimizar e! impacto de los ruidos no sólo hay que proteger e! canal, sino
que es preciso establecer metodologías de detección y corrección de los errores que
invariablemente se van a producir.
Una de esas metodología es la redundancia. La redundancia consiste en repe-
tir, bajo determinados criterios, ciertas características de! mensaje. Mostraremos un
ejemplo que ayudará a entender el proceso. Supongamos un alfabeto tal que cada
palabra se construya con 4 bits, para un total de 16 palabras (24 = 16), cada una de
ellas del tipo ala2a)a~, siendo al' a2, a) y a410s valores de los bits de la palabra. Antes de
enviar un mensaje añadimos a la palabra 3 caracteres adicionales CIC2C), de forma que
el mensaje codificado tal y como circula por e! canal será de la forma ala2a3a4clcl3"
Los elementos clcl3 serán los garantes de la eguridad de! mensaje -se les denomina
códigos de paridad- y se generan de! siguiente modo:

o sial +a2 +a3 espar


1 sial +a2 +a3 es impar

o si al +a2 +a4 es par


1 i al + a2 + a4 es impar

o si a2 +a3 +a~ es par


ia2+a3+a4 es impar

84
DIALOGAR CON CEROS Y UNOS

A un mensaje como 0111 se le asignarán los siguientes códigos de paridad:


Como 0+ 1+ 1 = 2 par, el dígito c =O
Como 0+ 1+ 1= 2 par, el dígito '2 = O
Como 1+ 1 + 1 = 3 impar, el dígito [3 = 1.

En consecuencia, el mensaje 0111 se enviará en la forma 0111001. Para las 16


«palabras» siguientes resulta la tabla:

Mensaje original Mensaje enviado


0000 0000000
0001 0001011
0010 0010111
0100 0100101
1000 1000110
1100 1100011
1010 1010001
1001 1001101
0110 0110010
0101 0101110
0011 0011100
1110 1110100
1101 1101000
1011 1011010
0111 0111001
1111 1111111

GENIO SIN PREMIO

(laude Elwood Shannon (1916-2001)es una de las mayores figuras de


la ciencia del siglo xx. Ingeniero técnico por la Universidad de Michigan
y doctor por el Massachusetts Institute of Technology, trabajó como
matemático en los Laboratorios Bell realizando investigaciones en crip-
tograffa y teoría de la comunicación. Sus aportaciones a la teoría de la
información bastan para situarle en el panteón de los más grandes, pero
al estar su trabajo a caballo entre la matemática y la informática, no
recibió nunca el galardón más codiciado por todo científico: el Nobel.

85
DIALOGAR CON CEROS Y UNOS

Supongamos que al final del trayecto el sistema receptor recibe el mensaje 1010110.
Nótese que esta combinación de ceros y unos no se encuentra entre los mensajes posi-
bles y,por tanto, debe tratarse de un error de transmisión. Para intentar corregir el error,
el sistema compara cada dígito con el conjunto de dígitos de posibles mensajes para
buscar la alternativa más probable. Para ello examinará la cantidad de dígitos distintos
para cada posición de la palabra errónea, tal y como se muestra a continuación.

Mensaje posible 0000000 0001011 0010111 0100101 1000110

Mensaje recibido 1010110 1010110 1010110 1010110 1010110

Número de dlqitos distintos


4 5 2 5 1
en cada posición

Mensaje posible 1100011 1010001 1001101 0110010 0101110

Mensaje recibido 1010110 1010110 1010110 1010110 1010110

Número de drgitos distintos


4 3 4 3 4
en cada posición

Mensaje posible 0011100 1110100 1101000 1011010 0111001 1111111

Mensaje recibido 1010110 1010110 1010110 1010110 1010110 1010110

Número de drgitos distintos


3 2 5 2 6 3
en cada posición

La palabra errónea (1010110) difiere en un solo dígito de otra: 1000110. Como


la diferencia es muy escasa, el sistema ofrecerá al receptor este segundo mensaje. El
principio es análogo al del corrector ortográfico de un procesador de texto cuando
detecta un término que no consta en su diccionario interno y propone una serie
de alternativas pr.óxirnas.A1 número de posiciones en que un mensaje, entendido en
tanto que una secuencia de caracteres, difiere de otro se conoce como distancia entre
dos secuencias. Este mecanismo concreto de detección y corrección de errores fue
propuesto por el norteamericano Richard W Hanuning (n. 1915), contemporáneo
de Shannon.
En información, como en cualquier otro ámbito, una cosa es detectar los posibles
errores y otra muy distinta corregidos. En codificaciones como la ejemplificada, si
sólo hay un candidato de distancia mínima el problema es trivial. Si se llama t al
número rrúnimo de «unos» que hay en las secuencias (exceptuando la secuencia
cuyos dígitos son todos ceros) entonces se verifica que:

86
DIALOGAR CON CEROS Y UNOS

S1"t es unpar, se po drán correzi (-1 errores.


corregir --
2
S·1 t es par, se po dránn corregir
correzi -_
t-2 errores.
2

Si sólo interesa detectar los errores, el número máximo que se podrá detectar
será (-l.
En el idioma de 16 caracteres expuesto más arriba, t = 3, de lo que se obtiene que
el dispositivo es capaz de detectar3-1 = 2 errores y de corregir (3-1): 2 = 1 error.

ENCUENTROS CRIPTOGRÁFICOS EN LA TERCERA FASE

En 1997 se introdujo un protocolo para la transmisión segura de información entre redes inalám-
bricas denominado WEP (acrónimo del inglés Wired Equivalent Privacy, «Privacidad equiparable
a la transmisión por hiío»), Este protocolo incluye un algoritmo de encriptación denominado
RC4, con dos tipos de claves de 5 y de 13 caracteres ASCII, respectivamente. Se trata, en conse-
cuencia, de claves de 40 o 104 bits o, alternativamente, de 10 o 26 caracteres hexadecimales:

5 letras alfanuméncas = 40 bits = 10 caracteres hexadecimales


13 letras alfanuméncas = 104 bits =26 caracteres hexadecimales

Las claves las proporciona el proveedor de la conexión, aunque el usuario suele poder carn-
biarlas. Antes de establecer la conexión, el ordenador solicita la clave. En la captura siguiente
se puede observar un mensaje de pericón de clave WEP donde se explicita su longitud en bits.
caracteres ASCII y caracteres hexadecimales.

(onhgurdnón inalámbrtra ~ J.

la coroasetla de red debe ser de 10 bts o 1~ bis deperdendo de su corh¡u-ación de


red.
Puede escTÜse COO'(J 5 6 13 caracteres ASOI, o 10626 caracteres hexedocinales.

En realidad, las claves reales son de mayor longitud. A partir de las que el usuario le proporciona,
el algoritmo RC4 genera una clave nueva de más bits, que es la que se emplea para cifrar la
transmisión. Este tipo de criptograffa se denomina de llave pública y se explicará con más de-
talle en el capitulo 5. Un usuario que quiera cambiar su clave hará bien en recordar que es más
segura una clave de diez caracteres hexadecimales que otra de cinco caracteres alfanuméricos,
aunque su tamaño en bits sea el mismo. Aunque también es cierto que «jairne» es más fácil de
recordar que su equivalencia hexadecimal,«6A61696D65».

87
DIALOGAR CON CEROS Y UNOS

Los «otros» códigos: los estándares


de la industria y el comercio
Aunque con menos glamour que los criptográficos o los binarios, y a menudo invi-
sibles a nuestros ojos a pesar de su ubicuidad, los códigos estandarizados de bancos,
mayoristas y otros grandes sectore de la actividad económica on uno de los pilares
sobre los que se sustenta la sociedad moderna. Para e! caso de estos códigos, la prio-
ridad es asegurar la identificación única y correcta de lo productos, ya sean éstos
cuentas bancarias, libros o manzanas. Vamos a examinar en detalle la naturaleza y e!
funcionamiento de algunos de ellos y de los procesos mediante los cuales se cifran
y supervisan.

Las tarjetas de crédito

Las tarjetas de crédito y débito que ofrecen entidades bancarias y grandes superficies
se identifican esencialmente por los mismos grupos de dígitos y por un mismo algo-
ritmo de cálculo y comprobación, basado precisamente en nue tra «vieja amiga» la
aritmética modular. La mayoría de las tarjeta poseen 16 dígitos cuyo valor puede ser
cualquiera entre O y 9, agrupados en grupos de 4 digitos para su mejor visualización,
a los cuales denotaremos:

ABCD EFGH IJKL MNOP

Cada grupo de dígitos codifica una información u otra: los cuatro primeros
(A, B, C, O) corresponden al identificativo de! banco o entidad que cede la tarjeta.
Cada banco tiene un número diferente que puede variar según e! continente, y que
además está relacionado con la marca de tarjeta. Por ejemplo, para el ea o de VISA
y de algunos bancos destacados son las siguientes.

ABCD Entidad
4940 Citibank
4024 Bank of America
4128 Citibank (EE.UU.)
4302 HSBC

El quinto dígito (E) corresponde al tipo de tarjeta e indica qué entidad financiera
gestiona esa tarjeta.

88
DIALOGAR CON CEROS Y UNOS

TIpo Entidad
3 American Express
4, O, 2 Visa
S, O Master Card
6 Discover

Como se ve no es una norma rígida.


Los diez dígitos siguientes (FGH IJKL MNO) identifican al usuario de forma
única. En esta identificación no sólo se proporciona un número de serie a cada clien-
te, sino que este número se relaciona también con el límite de crédito del grupo al
que pertenece la tarjeta (clásica, oro, platino) y su fecha de caducidad.
Finalmente, se emplea un dígito de control (P) que se relaciona con los anteriores
por el algoritmo de LU/1I1, llamado así en honor del ingeniero que lo desarrolló, el
alemán Hans Peter Luhn.
El funcionamiento de este algoritmo para una tarjeta numerada con 16 dígitos
es como sIgue:
1) Para cada dígito de las posiciones impares, empezando por la izquierda, se
calcula un dígito nuevo que es el que se tenía anteriormente multiplicado por
dos. Si el resultado de esta multiplicación es mayor de 9 se suman las dos cifras
del número obtenido (o hacemos la operación equivalente de restarle 9). Por
ejemplo, si obtenemos 17 tomaremos 1 + 7 = 8 o bien 17- 9 = 8-
2) A continuación, se suman los números así calculados y los dígitos situados en
las posiciones pares (incluido el de control).
3) Si el resultado es múltiplo de 10 (es decir, vale O en módulo 10) la numeración
de la tarjeta es correcta. Nótese que el dígito de control es el que hace que la
suma total sea múltiplo de 10.

CLUB DE COMIDAS

Una de las primeras tarjetas de crédito en adquirir un importante volumen de aceptación fue
la del Diner's Club, literalmente «Club de Comidas». Su impulsor fue el norteamericano Frank
McNamara, quien logró que varios restaurantes aceptaran el pago a crédito tras la entrega de
una tarjeta personalizada que McNamara repartfa entre sus mejores clientes. De hecho, el uso
más habitual de las tarjetas de crédito en sus primeras décadas de existencia era el pago de
comidas y cenas por parte de los vendedores ambulantes.

89
DIALOGAR CON CEROS Y UNOS

Por ejemplo, y para el caso de una tarjeta numerada del siguiente modo:

1234567890123452,

por el algoritmo de Luhn:

1·2 = 2
3·2=6
5·2=10=>1+0=1
7·2=14=>1+4=5 (o bien 14-9=5)
9·2=18=>1+8=9
1·2 = 2
3·2=6
5·2 = 10 => 1+ O = 1
2+6+1+5+9+2+6+1=n
2+4+6+8+0+2+4+2=~
32 + 28 = 60

El resultado es 60; múltiplo de 10. Por tanto el código de la tarjeta es un código


correcto.
Otro modo de implementar el algoritmo de Luhn e el que sigue. Un número de
ta.rjeta ABCD EFGH IJKL M OP es correcto si el doble de la suma de los dígitos
que ocupan un lugar impar rná la suma de lo dígitos que ocupan un valor par más
el número de dígitos en posición impar mayores de 4 es múltiplo de 10. Es decir,
2(A+C+E+G+I+K+M+O)+(B+ D+F+H+ J+L+N +P)+ número de dígi-
tos en posición impar mayores que 4 == O (mód. 10).

Aplicando esta segunda versión del algoritmo al ejemplo anterior:

1234 5678 9012 3452

2 ·(1+ 3+ 5+ 7 +9+ 1+ 3+ 5)+(2+4+6+ 8+0+ 2+4 + 2)+4 =


= 100 == O (mód. 10).

De nuevo e con tata que el número es un número de ta.rjetacorrecto. Hemos visto


que lo códigos de las tarjetas de crédito iguen un patrón matemático muy estricto.

90
DIALOGAR CON CEROS Y UNOS

APLlCATIVO EXCEL PARA EL CÁLCULO DEL DíGITO DE CONTROL


DE UNA TARJETA DE CRÉDITO

El número asociado a una tarjeta de crédito consta de 15 dígitos más un código de control,
agrupados en cuatro series de cuatro dlgitos cada serie. El dígito de control se calcula según el
algoritmo que queda reflejado en la tabla Siguiente.

B '::F";'¡.'[~".U. ·v
2 ___ ....::;O.c.
3 N°. Tarjeta 15 5 2 1 1 14 5 7 21 1--=-6~6~21 13 6 2 41
4
5 dígitos utilizados 5 2 4 5 7 2 6 6 2 362
6 dígitos posición par 2 4 7 6 6 3 2
7 Suma dígltos posición par 30
8 Número de dfgitos de lugar par mayoresque 4 3
9 Suma de lasdos cantidades anteriores 33
11Cl Oígitos posición impar 5 1 5 2 2 6
~1 Suma dígitos posición Impar 22
1. Sumar los dos resultadosanteriores más 1 56
1~ Restode dividir el resultado anterior por 10 6
1~ El O.e. es Osi el resultado anterior es Oen casocontrario es 10 menos el resultado anterior 4

¿Seria posible recuperar un dígito perdido? Sí, siempre que se trate de un número de
tarjeta válido. Averigüemos el valor de X en el número 4539 4512 03X8 7356.
Se empieza por multiplicar por 2 los números de las posiciones impares (4-3-4-
1-0-X-7-5) y dejándolos con un solo dígito.

4·2=8
3·2=6
4·2=8
1·2=2
0·2=0
X2=2X
7·2=14,14-9=5
5·2=10,10-9=1.

Sumamos lo dígitos de las posiciones pares y los nuevos de las posiciones im-
pares y se obtiene:

91
DIALOGAR CON CEROS Y UNOS

3O+41+2X=71+2X

71 + 2X, que sabemo que debe ser múltiplo de 10.

Si el valor de X fuera mayor de 4 (e inferior a 10) tendríamos que 2X estaría


comprendido entre 10 y 18. El valor de 2X reducido a un solo dígito es 2X - 9,
con lo que la suma anterior sería 71+ 2X - 9. El único valor de X que hace de la
expresión múltiple de lOes 9. Si, por el contrario, X fuera inferior o igual a 4, se
oberva que no hay ningún valor que verifique que 71 + 2X sea múltiplo de 10.
En consecuencia, el dígito perdido es el 9 y el número completo de la tarjeta de
crédito, 4539451203987356.

Los códigos de barras

El primer sistema de código de barras fue patentado el 7 de octubre de 1952 por los
norteamericanos arman WoodJand y Bernard Silver. Aunque el principio era el
mismo, su aspecto no: en lugar de las familiares barras,WoodJand y Silver pensaron en
círculos con céntricos. El primer uso oficial de un código de barras en un comercio
se dio en 1974, en un e tablecirniento de Troy, Ohio.
El código de barras moderno consiste en una serie de barras negras (que se codifican
en sistema binario como unos) y los espacios en blanco que quedan entre ellas (que lo
hacen como ceros), de diferentes anchos ambos, y que identifican artículos fisicos.Los
códigos suelen imprimirse en etiquetas y e leen mediante un dispositivo óptico. Este dis-
positivo, parecido a un escáner, mide la luz reflejada y deriva de ella la clave alfanumérica,
que a continuación transmite a un ordenador. Existen numeroso estándar de códigos de

O O O 1
Correspondencia entre el grosor de las barras y el del espacio que quede entre ellas
y los dígitos binarios.

92
DIALOGAR CON CEROS Y UNOS

barras, entre ellos: Code 128, Código 39, Codabar, EAN (apareció en 1976 en versiones
de 8 y 13 dígitos) o UPC (código universal de producto, usado principalmente en Es-
tados Unidos y disponible en versiones de 12 y 8 dígitos). El código más habitual es e!
EAN en su versión de 13 dígito , y es e! que se examinará aquí.A pesar de esta variedad
de normas, e! código de barras permite que todo producto pueda ser identificado en
cualquier parte de! mundo, de manera ágil y sin demasiado margen para e! error.

Oct. 7, 1952 N. J. WOOOLANO ET AL 2¡612,994


Cl.M3UYIIIC lPP~ A..'Ul lIIrnIlIl

3h.~t 1

FIG. I

I t l • I ;.3

FIG.2 FIG.3 F1G.4 FIG, s

2 • 3 •

FIG.6 FIG.8 FIG. 9

-------
12

FIG.IO

'NYE •• ~:
NOIIMA" J. WOODLAHD
eE:RHARD SI LV[~
,. lIT T>tflll AHORNn~

~~

La patente del sistema de anillos concéntricos de Woodland y Si/ver


que prefigura los modernos códigos de barras.

93
DIALOGAR CON CEROS Y UNOS

APLlCATIVO EXCEL PARA EL CÁLCULO


DEL DíGITO DE CONTROL DE CÓDIGO EAN-13

Un código de barras del tipo EAN-13 es un número formado por 12 dlgitos más un decimo-
tercero llamado código de control.

Los 12 dígitos se distribuyen en cuatro grupos:

G Empresa Producto

W 2

El algoritmo de cálculo consta de los siguientes pasos:

4 o 3 5 9 2 5 9 2 2

Sumade los dlgitos de lugar impar 27


Sumade los dígitos de lugar par y el resultado multiplicado por 3 51
Sumade los dos resultadosanteriores 78
Restode dividir por 10 el resultado anterior 8
El D.C esO o lO menosel resultado anterior

Usando el entorno Excel este alqorñrno se escribirla de la manera siguiente:

e o E ,oj·tlR'r1 .) j,(: f,í}f;'· •.• ~ ..•¡:5. ,,'o ~


rJ:. País Empresa Produdo D.C.

1 3 4 1 O 3 5 9 1 2 5 9 2 =R10

Sumade los dlgitos de lugar impar =c4+F4+H4+


J4+M4+04
Sumade los dígitos de lugar par y el resultado multiplicado por 3 HD4+G4+f4+L4+N4+P4)*3
Sumade los dos resultadosanteriores =R6+R7
Restode dividir por 10 el resultado anterior =RESIDUO(R8;
1O)
1" ElD.C esO o 10 menosel resultadoanterior =SI(R9=0;0;
1O-R9)

94
DIALOGAR CON CEROS Y UNOS

El código EAN-13

El término EAN procede de las siglas EII ropea n Article Number (<<NúmeroEuropeo
de Artículo») y u creación e remonta al año 1976. En la actualidad constituye
uno de los estándares de mayor implantación a lo largo y ancho de! globo. Los
códigos EA constan, habitualmente, de 13 dígito representados mediante barras
negras y espacio blancos que, de manera conjunta, determinan un código binario
de fácil lectura. El EAN-13 representa esos 13 dígitos por medio de 30 barras. Los
dígitos se encuentran distribuidos en tres partes: la primera, que consta de 2 o 3
números, indica e! código de! paí ; la segunda, que tiene 9 o 10 números, identi-
fica la empresa y e! producto; la tercera, de tan sólo un dígito, actúa como código
de control. Para un código ABCDEFGHIJKLM estas partes se descomponen del
modo siguiente:

• Los dos primeros (AB) forman e! código de! país de origen de! producto. A
España le corresponde el código 84, mientras que para Francia, por ejemplo,
es e! 83.
• Los cinco siguientes (CDEFG) identifican a la empresa productora.
• Los otros cinco (HIJKL) indican e! código de! producto que ha sido asignado
por la empre a.
• El último (M) es e! dígito de control. Para calculado se tienen que sumar los
dígitos situados en posición impar, empezando por la izquierda y sin contar
e! de control. Al valor resultante se le añade tres veces la suma de los dígitos
situados en las posiciones pares. El dígito de control es e! valor que hace
de la suma hallada anteriormente un múltiplo de 10. Como puede verse, e!
sistema de control recuerda enormemente al empleado para e! caso de las
tarjetas de crédito.

Verifiquemos si e! código iguiente es correcto.

95
DIALOGAR CON CEROS Y UNOS

8413871003049

8+ 1+8+ 1+0+0+3(4+3+ 7 +0+3+4) = 18+3(21) = 18+63= 81.

El dígito de control ¿correcto? debería ser 90 - 81= 9.


El modelo matemático del algoritmo se fundamenta en aritmética modular
módulo 10, de la siguiente forma.

ABCDEFGHIJKLM, se llama al valor de la expresión:

A+C+E+G+I+K+3(B+D+F+H+ J+L)=N

y 11 al valor de N en módulo 10. El dígito de control M viene determinado como


M=10-n.
En el ejemplo mostrado tenemos que 81 == 1 (mód. 10),luego el dígito de control
será, efectivamente, 10-1 = 9.
El algoritmo anterior puede enunciar e de manera equivalente utilizando el
dígito de control en los cálculos. Puede verificarse así la corrección del código de
control in calcularlo previamente, según el algoritmo siguiente.

A+C+E+G+I+K+3(B+D+F+H+ J+L)+M == (mód.lO).

Por ejemplo, y para el código

5701263900544

5+0+2+3+0+5+3(7+ 1+6+9+0+4)+4 = 100.

100 == O (mód. 10).

El código es correcto.

A título de curiosidad, vamos a intentar determinar el valor de un dígito perdido


de un código de barras. En concreto, el repre entado por X en el código siguiente:

401332003X497

96
DIALOGAR CON CEROS Y UNOS

Componemos lo dígito según el algoritmo y llamamos X al dígito que de -


conocemos.

4+1+3+0+3+4(0+3+2+0+X+9)+7=64+3X=0 (mód.l0).

En módulo 10 tenemos la igualdad

4+3X=0 (mód.l0).

3X =-4+0=-·Hl0·l=6 (mód. 10).

ótese que 3 tiene inverso ya que mcd (3,10) = 1.

Se observa que X debe ser 2. Luego el código correcto es

4013320032497.

LOS CÓDIGOS QR

En 1994, la empresa japonesa Denso-Wave de-


sarrolló un sistema gráfico de codificación para
Identificar las partes de los coches en una ca-
dena de montaje. El sistema, llamado QR por la
rapidez con la que podía ser leído por ingenios
diseñados para tal fin (el nombre QR corresponde
a las siglas del inglés quick response, «respuesta
rápida»), acabó por extenderse más allá de las
fábricas de coches y, a los pocos años, la mayoría
de los teléfonos móviles de Japón era capaz de
leer la información contenida en él al Instante. Un código QR de la universidad japonesa
El QR es un código de tipo matricial, formado de Osaka de 37 filas.

por un número variable de cuadrados de color


blanco o negro que, a su vez, se disponen en forma de un cuadrado de mayor tamaño. Los
cuadrados representan un valor binario, Oo 1, y por tanto, su funcionamiento se semeja mucho
al de los códigos de barras, aunque los códigos bidirnensionales de este tipo, en razón de su
diseño, tienen una mayor capacidad de almacenamiento.

97

También podría gustarte