Vous êtes sur la page 1sur 8

CienciaAhora, N 22, ao 11, septiembre 2008 - marzo 2009

CODIFICACIN Y DECODIFICACIN DE MENSAJES USANDO MATRICES DE ORDEN 3


Juan Carlos Sandoval Avendao Facultad de Ingeniera Agrcola Departamento de Agroindustrias Universidad de Concepcin

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

CienciaAhora, N 22, ao 11, septiembre 2008 - marzo 2009

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. #

" Escojamos la matriz inversible E $ !

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

CienciaAhora, N 22, ao 11, septiembre 2008 - marzo 2009

%! % '% " #" %* '# $# (% %! ") "!# %* "# *& 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

CienciaAhora, N 22, ao 11, septiembre 2008 - marzo 2009

%! " " '# ## %! %*

% #" $# ") "#

'% %* " (% ' "!# $ *&

( # "

) # " "! "' ' "( "%

"' ! #' "* #"

"# #$ ! "' "'

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

CienciaAhora, N 22, ao 11, septiembre 2008 - marzo 2009

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

CienciaAhora, N 22, ao 11, septiembre 2008 - marzo 2009

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

CienciaAhora, N 22, ao 11, septiembre 2008 - marzo 2009

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

CienciaAhora, N 22, ao 11, septiembre 2008 - marzo 2009

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

Vous aimerez peut-être aussi