Académique Documents
Professionnel Documents
Culture Documents
Introduccin Les gustara enviar un mensaje a otra persona sin que intermediarios, que pudiesen interceptar el mensaje, supieran lo que dice? ; si tal es su intencin este artculo podra servirle. Por lo tanto manos a la codificacin. Codificacin de mensajes Para codificar un mensaje necesitamos en primer lugar un mensaje. Oh !, qu sorpresa. Supongamos que el mensaje es HOLA VOY PRONTO Conocido el mensaje debemos asignarle a cada caracter un nmero. Usaremos la siguiente tabla de equivalencias ! /=:+-39 "E #F $G %H &I 'J (K )L *M "! N "" O "# P "$ Q "% R "& "' S "( T ") U "* V #! W #" X ## Y #$ Z #% [ #& \ #' ] #( ^
He dejado fuera caracteres como signos de interrogacin, signos de exclamacin, comas, puntos y comas, etc. para que la codificacin sea ms rpida. Ahora si ustedes quieren incluir ms caracteres no hay problema. Considerando la tabla anterior el mensaje que nos dimos como ejemplo ser: ) "' "# " ! #$ "' #' ! "( "* "' "% #" "' Y qu hacemos con los nmeros anteriores?. Los multiplicamos adecuadamente por una matriz de orden $ que posea inversa si no sabe o no se acuerda qu es una matriz y cmo calcular su inversa revise el excelente artculo "Inversas de orden # y $" Revista Ciencia Ahora Ao ) Nmero "' pginas (( )* 74
Multiplicar adecuadamente los nmeros anteriores por una matriz de orden $ significa que debemos formar una matriz con los nmeros del mensaje, llammosle Q! Q ensaje 9riginal de modo que Q! E exista. Recordemos que el producto de dos matrices existe cuando el nmero de columnas de la primera matriz mencionada coincide con el nmero de filas de la segunda matriz es decir para que Q! E exista se debe dar que el nmero de columnas de Q! sea $ porque E es una matriz cuadrada de orden $ Observe que lo anterior obliga a que el nmero de caracteres del mensaje sea mltiplo de $. Y qu hacemos si el nmero de caracteres no es mltiplo de $?. Rellenamos los lugares faltantes con espacios es decir con ceros. Qu logramos con calcular Q! E?. Logramos codificar el mensaje es decir el Q ensaje - odificado Q- es Q- Q! E En nuestro ejemplo ) " Q! "' "( "% "' ! #' "* #" "# #$ ! "' "' # ! " $ " para la codificacin. #
Noten que la eleccin de E es absolutamente arbitraria, depende enteramente de nosotros; el nico requisito es que posea inversa. Luego de ) " Q- Q! E "' "( "% "' ! #' "* #" "# #$ " ! $ "' ! "' $ " # %! " '# %! %* % #" $# ") "# '% %* (% "!# *&
# ! "
Finalmente enviamos a quien corresponda como mensaje codificado la siguiente sucesin de nmeros 75
%! % '% " #" %* '# $# (% %! ") "!# %* "# *& Ya s lo que estn pensando. Qu hace la persona que recibe este conjunto de nmeros, para saber cul es el mensaje original? Sigan leyendo...
Decodificacin de mensajes Decodificar el mensaje recibido significa obtener el mensaje original a partir del mensaje que se recibe. Sabemos que Q- Q! E Si multiplicamos esta expresin a derecha por la inversa de E se obtiene Q- E" Q!
La igualdad anterior nos dice que para obtener el mensaje original a partir del mensaje codificado debo multiplicar ste por la inversa de E En resumen para que el destinatario de nuestro mensaje pueda saber su contenido debemos enviarle el mensaje codificado Q- y adems enviarle la matriz E" y esperar que sepa multiplicar matrices y que conozca la tabla de equivalencias. Supongamos que nosotros recibimos el mensaje codificado Q- y la inversa de E " $ ! # ! " $ " es #
No es muy difcil darse cuenta que la inversa de E " " E" ## ' $ ( # " # "! '
Usemos la frmula para obtener el mensaje original %! " '# %! %* % #" $# ") "# '% %* " " (% ## ' $ "!# *&
Q! Q- E
"
( # "
# "! '
76
( # "
Usando ahora la tabla de equivalencias ! /=:+-39 "E #F $G %H &I 'J (K )L *M "! N "" O "# P "$ Q "% R "& "' S "( T ") U "* V #! W #" X ## Y #$ Z #% [ #& \ #' ] #( ^
El mensaje enviado es ) "' "# " ! #$ "' #' ! "( "* "' "% #" "' L S P E Z S ] T V S R X S Qu sorpresa, no lo saba!. Fcil cierto?. Prueben con otros mensajes incorporando ms caracteres a la tabla de equivalencias. Para finalizar este artculo un grupo de preguntas Podramos considerar matrices de orden # % algn orden superior?. Qu modificaciones tendra el mtodo anterior? Podramos usar la frmula de codificacin Q- E Q! ?. Si la respuesta es afirmativa, cules son los cambios?.
A continuacin, aparece el listado fuente, escrito en Turbo Pascal, de un programa que permite codificar un mensaje ingresado por el usuario. El programa adems genera un archivo de texto en disco de nombre CODIFICA.TXT con la misma informacin que aparece en pantalla. Listado N 1: Programa para codificar un mensaje de no ms de #&& caracteres Program Codificador_de_Mensajes; Uses Crt; Const n=3; type matriz=array[1..100,1..n] of integer; type matrizr=array[1..100,1..n] of real; var 77
mensaje : String; i, i1, j, m1, m2, m3, m4, k : integer; Mo : matriz; A, Mc : matrizr; arch : text; Function num(caracter:char):integer; Begin Case UpCase(caracter) of ' ': num:=0; 'A': num:=1; 'B': num:=2; 'C': num:=3; 'D': num:=4; 'E': num:=5; 'F': num:=6; 'G': num:=7; 'H': num:=8; 'I': num:=9; 'J': num:=10; 'K': num:=11; 'L': num:=12; 'M': num:=13; 'N': num:=14; '': num:=15; 'O': num:=16; 'P': num:=17; 'Q': num:=18; 'R': num:=19; 'S': num:=20; 'T': num:=21; 'U': num:=22; 'V': num:=23; 'W': num:=24; 'X': num:=25; 'Y': num:=26; 'Z': num:=27; end; End; Begin ClrScr; Assign(arch,'codifica.txt'); Rewrite(arch); write('Ingrese el mensaje : ');
78
readln(mensaje); writeln(arch,'El mensaje es : ',mensaje); writeln(arch); m1:=Length(mensaje); m2:= m1 div n; m3:= m1 mod n; for i:=1 to m2+1 do for j:=1 to n do Mo[i,j]:=0; if (m3=0) then begin k:=1; Repeat for i:=1 to m2 do for j:=1 to n do begin Mo[i,j]:=num(mensaje[k]); inc(k); end; until (k>m1); end else begin k:=1; Repeat for i:=1 to m2 do for j:=1 to n do begin Mo[i,j]:=num(mensaje[k]); inc(k); end; until (k>m2*n); k:=m2*n+1; Repeat for i:=m2+1 to m2+1 do for j:=1 to m3 do begin Mo[i,j]:=num(mensaje[k]); inc(k);
79
end; until (k>m2*n+m3); end; writeln(' ':3,'MATRIZ ORIGINAL'); writeln(arch,' ':3,'MATRIZ ORIGINAL'); if (m3=0) then begin for i:=1 to m2 do for j:=1 to n do begin writeln('Mo[',i,',',j,']=',Mo[i,j]); writeln(arch,'Mo[',i,',',j,']=',Mo[i,j]); end; end else begin for i:=1 to m2+1 do for j:=1 to n do begin writeln('Mo[',i,',',j,']=',Mo[i,j]); writeln(arch,'Mo[',i,',',j,']=',Mo[i,j]); end; end; writeln(arch); writeln(arch,' ':3,'MATRIZ A'); writeln; writeln(' ':3,'MATRIZ A'); for i:=1 to n do for j:=1 to n do begin write('A[',i,',',j,'] = '); readln(A[i,j]); end; for i:=1 to n do begin writeln(arch); for j:=1 to n do begin write(arch,' ':3,A[i,j]:0:2,' ':3);
80
end; end; writeln(arch); if (m3=0) then m4:=m2 else m4:=m2+1; for i:=1 to m4 do for j:=1 to n do begin Mc[i,j]:=0.0; for k:=1 to n do Mc[i,j]:=Mc[i,j]+Mo[i,k]*A[k,j]; end; writeln; writeln(arch); writeln(' ':3,'MATRIZ CODIFICADA Mc'); writeln(arch,' ':3,'MATRIZ CODIFICADA Mc'); for i:=1 to m4 do begin writeln; writeln(arch); for j:=1 to n do begin write(' ':3,Mc[i,j]:0:2,' ':3); write(arch,' ':3,Mc[i,j]:0:2,' ':3); end; end; writeln; writeln(arch); Close(arch); End.
Cualquier comentario, observacin, correccin, adicin, peticin, etc., ser bienvenida, ya sea por medio de correo electrnico dirigido a la direccin jsandova@udec.cl o en su defecto por medio de correo postal dirigido a Juan Carlos Sandoval Avendao, Vicente Mndez 595. Casilla 537. Chilln. Chile.
81