domingo, 14 de octubre de 2012

Algoritmo Afín

ANÁLISIS

El algoritmo a seguir para desarrollar el método AFIN es el siguiente:
1.        Asignar un valor entero a cada letra del alfabeto español.
A =0 ,B=1 ,C=2 ,D=3 ,E=4 ,F=5 ,G=6 ,H=7 ,I=8 ,J=9 ,K=10 ,L=11 ,M=12 ,N=13 ,Ñ=14 ,
O=15 ,P=16 ,Q=17 ,R=18 ,S=19 ,T=20 ,U=21 ,V=22 ,W=23 ,X=24 ,Y=25Z=26 .

2.       Leer la constante de decimación  ( a ).
3.       Leer la constante de desplazamiento ( b ).

4.      Si    a = 1     y     1<= b <= 27; será por desplazamiento variable.


A.      Comenzar a cifrar.
a.       Leer el texto que se desea cifrar  ( Mensaje En Claro ).
Nota: Validar que únicamente se ingresen los caracteres aceptados en el alfabeto.
b.       Asignar el valor correspondiente a cada letra del texto que se desea cifrar (Mi).
c.       Leer el texto que servirá como clave.
d.      Asignar el valor correspondiente a cada letra del texto que servirá como clave ( Ki ).
Nota: Pueden recibirse llaves de cualquier tamaño,  más grandes o más chicas que el texto que se desea cifrar, sin embargo la llave se adaptará al tamaño del texto a cifrar:
e.      Realizar la siguiente operación:   ( Mi + Ki ) mod 27 
f.        Convertir el valor obtenido de la operación anterior a una letra correspondiente.
g.      Termina el proceso de cifrado.

B.      Comenzar a descifrar.
a.       Leer el texto cifrado que desea descifrar  ( Ci )
b.      Asignar el valor correspondiente a cada letra del texto cifrado ( Ki )
c.       Leer el texto que servirá como llave
d.      Asignar el valor correspondiente a cada letra del texto que servirá como llave
e.      Realizar la siguiente operación:   (Ci – Ki ) mod 27
Nota: la operación modulo trabaja bajo las mismas características antes descritas.


5.       Si    a distinto de 1     y     b distinto de cero; decimación pura.

A.      Comenzar a cifrar.
a.       Leer el texto que se desea cifrar  ( mensaje en claro ).
Nota: Validar que únicamente se ingresen los caracteres aceptados en el alfabeto.
b.      Asignar el valor correspondiente a cada letra del texto que se desea cifrar  (Mi).
Nota: aquí no se necesita de un texto adicional que funcione como clave.
c.       Realizar la siguiente operación  ( a * Mi ) mod 27.
d.      Convertir el valor obtenido de la operación anterior, a su letra correspondiente.
e.      Termina el proceso de cifrado.

B.      Comenzar a descifrar.
a.       Obtener el valor inverso de “a”.
b.      Realizar la siguiente operación   ( Ci * a-1 ) mod 27.
c.       Convertir el valor obtenido de la operación anterior, a su letra correspondiente.
d.      Termina el proceso de descifrado.


Diagrama de flujo


Diagramas de clases


Afin

ConvierteaNum



         Empieza() : void
       main  (args: String[]) : void

          letraaNum ( a: char ) : int
           NumaLetra( c: int ) : char

CifAfin

DesCifAfin



cifrar(cad: String, cve: String) : void
cifrar(cad: String, a: int) : void
Cifrado() : void


descifrar(cif: String, cve: String): void
descifrar(cif: String, a: int): void
Descifrado() : void



DESARROLLO

Para la ejecución del programa correspondiente al algoritmo es necesario tener instalado el jdk y estos serán ejecutables. Se anexan el correspondientes.



No hay comentarios:

Publicar un comentario