Está en la página 1de 25

Universidad Nacional Autnoma de Mxico

Facultad de Ingeniera

Criptografa
Grupo 2

Proyecto: Cifradores Clsicos

ALUMNOS:

ARGUETA CORTES JAIRO I.


MENDOZA GAYTAN JOSE T.
MONTERO GONZALEZ CESAR G.
QUEZADA BORJA ARNULFO B.
PREZ ESCALANTE JAIME R.

PROFESORA:

M. en C. Ma. Jaquelina Lpez Barrientos

Lunes 22 de Marzo de 2010

1
INDICE

Introduccin..3

Objetivo...3

Caractersticas de todo criptosistema.3

Cifradores por sustitucin...4

Cifradores por transposicin..5

Algoritmo Propio.7
1. Caractersticas cifrador
2. Forma de operacin programa y restricciones
3. En qu se basa la seguridad del cifrador
4. Cdigo Fuente Programa

Rol de Integrantes23

Conclusiones24

Bibliografa.....25

2
Objetivo

Integrar conocimientos, habilidades y actitudes, adems de la capacidad de trabajar en equipo


para desarrollar un proyecto de calidad correspondiente a un Sistema de Cifradores Clsicos el
cual cumpla con las caractersticas requeridas en el documento de requerimientos.

Introduccin

Las tcnicas de cifrado son aquellas que se utilizan para ocultar un mensaje y evitar que sea legible
si ste es accedido o interceptado por algn proceso o usuario no autorizado, as, el objetivo
bsico de todo sistema de cifrado es mantener privada la informacin dentro de un entono dado,
como puede ser un medio de transmisin o un sistema de almacenamiento de datos que por sus
caractersticas de diseo, desarrollo o funcionamiento, puede contraerse inseguro.

En cuanto al trmino "Clsicas", se refiere a las tcnicas usadas en los principios de la criptografa y
hasta 1984, cuando es desarrollada la teora matemtica de las comunicaciones por Claude
Shannon y a partir de entonces se conoce como criptografa moderna.

Las tcnicas clsicas de cifrado emplean principalmente operaciones de sustitucin y transposicin


de caracteres, considerando siempre la presencia de algn tipo de clave, la cual debe permanecer
secreta, esto es, la clave debe de ser privada y nicamente conocida por el creador de la
informacin y aquellos a quienes se les considere usuarios lcitos y autorizados para acceder a ella,
ms aun, porque es la misma clave que se utiliza para cifrar y descifrar.

Caractersticas de todo criptosistema

Tipo de operaciones

Se emplean para la transformacin del mensaje, considerando para ello dos grandes grupos; los
cuales corresponden a operaciones de sustitucin y operaciones de transposicin.

Nmero de claves

Se pueden emplear para cifrar texto plano, as, pueden emplearse una o mas claves, siendo
conocidos como sistemas de cifrado simtrico aquellos que usan la misma clave para cifrar y
descifrar, en tanto que los sistemas que utilizan una clave para cifrar y otra para descifrar son
llamados sistemas asimtricos

Procesamiento de la informacin

Este puede realizarse en forma serial, o por bloques, ya sea del mensaje en claro para el cifrado de
la informacin o del criptograma para el descifrado de los datos, adems, el tamao de los bloques
en este tipo de procesamiento depende de la capacidad del sistema.

3
Sin importar cun complejo sea el sistema criptogrfico que se utilice, estas caractersticas
siempre estarn presentes en todo sistema de cifrado, ya que en cualquier caso es indispensable
procesar la informacin, con base en las operaciones estipuladas en el algoritmo y aplicando para
ello al menos una clave de cifrado.

Cifradores por sustitucin


Los cifradores por sustitucin utilizan como tcnica reemplazar cada carcter del texto en claro
por otro correspondiente al alfabeto de cifrado segn la clave y el procedimiento utilizado; as, los
algoritmos se pueden clasificar a su vez en dos grupos, los de sustitucin monoalfabtica y los de
sustitucin polialfabtica.

Algoritmos de sustitucin monoalfabtica

Este grupo de algoritmos se refiere a la utilizacin de un alfabeto, esto es, si el algoritmo emplea
un solo alfabeto tanto para el cifrado como para el descifrado de los datos.

Sin embargo, el proceso de sustitucin puede realizarse de dos formas distintas.

4
Sustitucin monogrmica: es aquella en que el cifrado se realiza carcter a carcter, esto es,
cifrando uno a uno los smbolos del mensaje en claro. Ejemplos de este tipo de cifrado son los
algoritmos: Polybios, Csar, Afn, Desplazamiento.

Sustitucin poligrmica: con la finalidad de aumentar la seguridad del mensaje resguardado, el


proceso de cifrado se lleva a cabo por bloques de caracteres, esto es, cifrando de dos en dos, de
tres en tres, de N en N los smbolos del mensaje en claro. Algoritmos de este tipo son Playfair y
Hill.

Algoritmos de sustitucin polialfabtica

Este tipo de algoritmos se refiere a que para llevar a cabo la transformacin del texto plano en
criptograma, es necesario reemplazar cada carcter del mensaje en claro por otro correspondiente
a un grupo de alfabetos, esto es, la base sobre la que se trabaja corresponde a un conjunto de
alfabetos que contengan todos aquellos smbolos que formarn parte de los textos a cifrar y
descifrar.

Sin embargo, este proceso de sustitucin puede realizarse de dos formas distintas:

Sustitucin peridica: aquella que se repite con frecuencia a intervalos determinados.

Sustitucin no-peridica: aquella que se repite a intervalos indeterminados.

Cifradores por transposicin


Los cifradores por transposicin tambin llamados por permutacin de caracteres, basan su
operacin en el reordenamiento de los elementos que conforman el mensaje o texto a cifrar, de
manera que el resultado de ello es la informacin del texto plano difuminada en un mensaje no
comprensible a simple vista, ocasionando con ello la difusin propuesta por Shannon para la
proteccin de informacin en los trabajos que en un momento desarroll y que a la fecha se han
convertido en la carta magna de la era de la informacin.

Transposicin inversa: Es la ms sencilla de las transposiciones y consiste en escribir en forma


inversa, esto es, de izquierda a derecha, o bien, hacerlo de izquierda a derecha pero empezando
por el final del mensaje.

Transposicin simple: Este tipo de citado busca reordenar los caracteres de tal manera que no sea
legible el mensaje a simple vista como en el caso de transposicin inversa.

Transposicin doble: Esta tcnica consiste en aplicar dos veces de manera consecutiva el cifrado
de transposicin simple.

Transposicin por grupos: Este tipo de cifrado busca reordenar los caracteres del mensaje a cifrar
por grupo, para lo cual se consideran grupos de perodo, lo que implica que la transposicin es
peridica y que despus de aplicar la permutacin indicada con el tamao de grupo dado sobre el

5
texto en claro, esta accin se repetir tantas veces como sea necesario hasta haber cifrado el texto
deseado.

Transposicin por series: Este tipo de cifrado reordena los caracteres del mensaje a cifrar como
una serie de submensajes, de manera que el criptograma tiene la forma: Cripto=
Ms1,Ms2,Ms3...MsN. Donde cada uno de los submensajes sigue una funcin determinada, del
total de caracteres que conforman el texto a cifrar con base en la posicin que ocupa cada uno en
el mensaje.

6
Algoritmo Propio
1.- Caractersticas Cifrador

El programa consta de dos partes cifrado y descifrado

A) Proceso de cifrado

Consideraciones:

- Todo lo que se escriba debe hacerse en minsculas


- Todo lo que se escriba debe hacerse sin espacios
- El mensaje y clave slo aceptan caracteres alfanumricos

1. El usuario introduce una cadena de caracteres y una clave

Cadena de caracteres (Mcla):

e s t e s e m e s t r e n o v a a s e r t a n b u e n o

Clave (k) = frasquito

f r a s q u i t o

2. Mcla se divide en dos bloques , de acuerdo a las siguientes consideraciones

- Residuo de Tamao de Mi/2 =0, entones tamao de bloque1(1B) = tamao de


bloque2(2B)

- Residuo de Tamao de Mi/2 =! 0, entones tamao de bloque1(1B) = tamao de


bloque2 +1 ((2Ba)

7
-

En caso de que se presentar el segundo caso, se agregara un caracter de relleno que ser

3. La cadena se divide en dos bloques (renglones), alternando su escritura en orden una letra en el primer bloque y la siguiente en el otro
bloque.

Bloque A e t .
Bloque B s e

Siguiendo con la alternancia:

Bloque A(1A) e t s m s r n v a e t n u n
Bloque B(2B) s e e e t e o a s r a b e o

4. Se toma 2B y se invierte el orden

2B o e b a r s a o e t e e e s
Ahora ser 2Ba

5. Se concatenan 1A2Ba

e t s m s r n v a e t n u n o e b a r s a o e t e e e s
1A 2Ba

Este ser un Cripto Parcial (CP)

8
6. Segn la siguiente tabla o arreglo se le asigna el valor correspondiente a cada letra del cripto parcial. Tambin a la clave se les asigna su
correspondiente valor, se suman sus letras y se divide entre el tamao del alfabeto sin contar el carcter de relleno (37). Y se pone
especial atencin al residuo

Tabla

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

a b c d e f g h I j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0

Valor CP 5 21 20 13 20 19 14 23 1 5 21 14 22 14 16 5 2 1 19 20 1 16 5 21 5 5 5 20

CP E T S M S R N V A E T N U N O E B A R S A O E T E E E S

K f r a s q u i t o
Valor K 6 19 1 20 18 22 9 21 16

Suma 132
Residuo 21

7. Se toma la cadena del cripto y se extiende la el valor del residuo tantas veces sea necesario.

9
Valor CP 5 21 20 13 20 19 14 23 1 5 21 14 22 14 16 5 2 1 19 20 1 16 5 21 5 5 5 20
CP e t s m s r n v a e t n u n o e b a r s a o e t e e e s
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21

8. Se suma los valor de CP y el Residuo

Valor 5 21 20 13 20 19 14 23 1 5 21 14 22 14 16 5 2 1 19 20 1 16 5 21 5 5 5 20
CP
CP e t s M s r n v a e t n u n o e b a r s a o e t e e e s
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
suma 26 42 41 34 41 40 35 44 22 26 42 35 43 35 37 26 23 22 40 41 22 37 26 42 26 26 26 41

9. Segn el valor de la suma se sustituye por su correspondiente letra segn la siguiente tabla

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

0 9 8 7 6 5 4 3 2 1 z y x w v u t s r q p o n m l k j i h g f e d c b a

- Si el valor de la suma es <=38 , entonces se sustituye la letra directamente

Valor 5 21 20 13 20 19 14 23 1 5 21 14 22 14 16 5 2 1 19 20 1 16 5 21 5 5 5 20
CP
CP e t s M s r n v a e t n u n o e b a r s a o e t e e e s
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
suma 26 42 41 34 41 40 35 44 22 26 42 35 43 35 37 26 23 22 40 41 22 37 26 42 26 26 26 41
m E d p m d d b m o p p b m m m m

10
- Si el valor de la suma es >38 , se le resta el tamao del alfabeto , en este caso 38, y se sustituye por la letra

Valor CP 5 21 20 13 20 19 14 23 1 5 21 14 22 14 16 5 2 1 19 20 1 16 5 21 5 5 5 20
CP e t S m s r n v a e t n u n o e b a r s a o e t e e e s
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
suma 26 42 41 34 41 40 35 44 22 26 42 35 43 35 37 26 23 22 40 41 22 37 26 42 26 26 26 41
m e d p m d d b m o p p b m m m m
Resta 4 3 3 2 6 4 5 2 3 4 3

Valor CP 5 21 20 13 20 19 14 23 1 5 21 14 22 14 16 5 2 1 19 20 1 16 5 21 5 5 5 20
CP e t S m s r n v a e t n u n o e b a r s a o e t e e e s
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
suma 26 42 41 34 41 40 35 44 22 26 42 35 43 35 37 26 23 22 40 41 22 37 26 42 26 26 26 41
m e d p m d d b m o p p b m m m m
Resta 4 3 3 2 6 4 5 2 3 4 3
m e d p m d d b m o p p b m m m m

Valor CP 5 21 20 13 20 19 14 23 1 5 21 14 22 14 16 5 2 1 19 20 1 16 5 21 5 5 5 20
CP e t S m s r n v a e t n u n o e b a r s a o e t e e e s
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21

11
suma 26 42 41 34 41 40 35 44 22 26 42 35 43 35 37 26 23 22 40 41 22 37 26 42 26 26 26 41
m e d p m d d b m o p p b m m m m
Resta 4 3 3 2 6 4 5 2 3 4 3
m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9

El cripto final (CF) estar dado por las consideraciones, entonces nos queda

valor CP 5 21 20 13 20 19 14 23 1 5 21 14 22 14 16 5 2 1 19 20 1 16 5 21 5 5 5 20
CP e t S m s r n v a e t n u n o e b a r s a o e t e e e s
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
Suma 26 42 41 34 41 40 35 44 22 26 42 35 43 35 37 26 23 22 40 41 22 37 26 42 26 26 26 41
m e d p m d d b m o p p b m m m m
Resta 4 3 3 2 6 4 5 2 3 4 3
CF m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9

Mcla e s t E s e m e s t r e n o v a a s e r t a n b u e n 0
Crpto m 8 9 E 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9

B) Proceso descifrado

Consideraciones:

- Todo lo que se escriba debe hacerse en minsculas


- Todo lo que se escriba debe hacerse sin espacios
- El criptograma slo aceptan caracteres alfanumricos y el carcter de relleno ()
- El tamao del criptograma debe ser divisible entre dos

12
1. Se sustituye el correspondiente valor de la letra de la palabra clave, segn la siguiente tabla, se suman las letras y se divide entre el
tamao del alfabeto sin contar el carcter de relleno (37). Y se pone especial atencin al residuo

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

a b c d e f g h I j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0

K f r a s q u i t o
Valor K 6 19 1 20 18 22 9 21 16

Suma 132
Residuo 21

2. Se sustituye el correspondiente valor de la letra del cripto (C1) segn la siguiente tabla

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

0 9 8 7 6 5 4 3 2 1 z y x w v u t s r q p o n m l k j i h g f e d c b a

C1 m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9
Valor 26 4 3 34 3 2 35 6 22 26 4 35 5 35 37 26 23 22 2 3 22 37 26 4 26 26 26 3

3. Se toma la cadena del cripto y se extiende el valor del residuo tantas veces sea necesario.

13
C1 m 8 9 e 9 d 0 6 p m 8 d 7 d b m o p 0 p 9 b m 8 m m m 9
Valor 3 3 2 2 3 3 3 2 2 2 2 3 2 2 2 2
26 4 3 4 3 2 5 6 2 6 4 5 5 5 7 6 3 2 2 3 2 7 6 4 6 6 6 3
Residu 21 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
o 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

4. Se restan los valor de CP y el Residuo (Res)

C1 m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9
Valor 26 4 3 34 3 2 35 6 22 26 4 35 5 35 37 26 23 22 2 3 22 37 26 4 26 26 26 3
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
resta 5 -17 -18 13 -18 -19 14 -15 1 5 -17 14 -16 14 16 5 2 1 -19 -18 1 16 5 -17 5 5 5 -18

5. Segn el valor de la resta se sustituye por su correspondiente letra segn la siguiente tabla

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

a b c d e f g h I j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0

C1 m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9
Valor 26 4 3 34 3 2 35 6 22 26 4 35 5 35 37 26 23 22 2 3 22 37 26 4 26 26 26 3
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
Resta 5 -17 -18 13 -18 -19 14 -15 1 5 -17 14 -16 14 16 5 2 1 -19 -18 1 16 5 -17 5 5 5 -18

14
e m n a e n n o e b a a o e e e e
Suma 21 20 20 19 23 21 22 19 20 21 20
t s s r v t u r s t s

Se hacen dos consideraciones

- Si el valor de la suma es >0 (positivo), entonces se sustituye la letra directamente

C1 m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9
Valor 26 4 3 34 3 2 35 6 22 26 4 35 5 35 37 26 23 22 2 3 22 37 26 4 26 26 26 3
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
resta 5 -17 -18 13 -18 -19 14 -15 1 5 -17 14 -16 14 16 5 2 1 -19 -18 1 16 5 -17 5 5 5 -18
e m n a e n o e b a a o e e e e

- Si el valor de la suma es <0 (negativo) , se le suma el tamao del alfabeto , en este caso 38, y se sustituye por la letra

C1 m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9
Valor 26 4 3 34 3 2 35 6 22 26 4 35 5 35 37 26 23 22 2 3 22 37 26 4 26 26 26 3
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
Resta 5 -17 -18 13 -18 -19 14 -15 1 5 -17 14 -16 14 16 5 2 1 -19 -18 1 16 5 -17 5 5 5 -18
e m n a e n n o e b a a o e e e e
Suma 21 20 20 19 23 21 22 19 20 21 20

C1 m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9
Valor 26 4 3 34 3 2 35 6 22 26 4 35 5 35 37 26 23 22 2 3 22 37 26 4 26 26 26 3

15
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
Resta 5 -17 -18 13 -18 -19 14 -15 1 5 -17 14 -16 14 16 5 2 1 -19 -18 1 16 5 -17 5 5 5 -18
e m n a e n n o e b a a o e e e e
Suma 21 20 20 19 23 21 22 19 20 21 20
t s s r v t u r s t s

El Mcla intermedio (Mi) estar dado por las consideraciones, entonces nos queda

C1 m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9
Valor 26 4 3 34 3 2 35 6 22 26 4 35 5 35 37 26 23 22 2 3 22 37 26 4 26 26 26 3
Residuo 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
Resta 5 -17 -18 13 -18 -19 14 -15 1 5 -17 14 -16 14 16 5 2 1 -19 -18 1 16 5 -17 5 5 5 -18
e m n a e n n o e b a a o e e e e
Suma 21 20 20 19 23 21 22 19 20 21 20
Mi e t s m s r n v a e t n u n o e b a r s a o e t e e e s

C1 m 8 9 e 9 0 d 6 p m 8 d 7 d b m o p 0 9 p b m 8 m m m 9
Mi e t S m s r n v a e t n u n o e b a r s a o e t e e e s

16
6. Mi se divide en dos bloques

1B e t S m s r n v a e t n u n
2B o e B a r s a o e t e e e s

7. Se toma 2B y se invierte el orden de escritura (2Ba)

2B o e B a r s a o e t e e e s
2Ba s e E e t e o a s r a b e o

8. Se toma 1B y 2Ba y se alterna su escritura, el resultado ser el Mcla final

1B e t s m s r n v a e t n u n
2Ba s e e e t e o a s r a b e o

Mcla: estesemestrenovaasertanbueno

Mcla: este semestre no va a ser tan bueno

9. En caso de que hubiera rellano se elimina

17
1. Forma de operacin programa y restricciones

a) Proceso cifrado

1. Todo texto introducido debe estar escrito en minsculas


2. Ingrese el mensaje a cifrar. Slo debe contener caracteres alfanumricos (no espacios o
caracteres especiales)
3. Ingrese la clave que utilizar. Slo debe contener caracteres alfanumricos (no espacios o
caracteres especiales)
4. Una vez introducidos los datos presione el botn Encriptar, para llevar a cabo el proceso
de cifrado

b) Proceso descifrado

1. Todo texto introducido debe estar escrito en minsculas


2. Ingrese el criptograma. Slo debe contener caracteres alfanumricos (no espacios o
caracteres especiales)
3. El tamao del criptograma debe ser par
4. Ingrese la clave que se emple para cifrar. Slo debe contener caracteres alfanumricos y
(no espacios o caracteres especiales)
5. Una vez introducidos los datos presione el botn Desencriptar, para llevar a cabo el
proceso de descifrado

2. En qu se basa la seguridad del cifrador

Consideraciones

1. El cifrador emplea operaciones de sustitucin y transposicin. Se incrementa la seguridad


al combinar las tcnicas de cifrado, se crea difusin y confusin en el criptograma.
2. En cuanto a la operacin de transposicin, primero se emplea una transposicin simple y
posteriormente una transposicin semi-inversa, pues slo se le aplica a una parte del
mensaje, y adems es al segundo bloque que podra considerar un caracter de relleno. Al
momento del descifrado podra aplicarse una trasposicin inversa completamente lo que
cambiaria el Mcla
3. En cuanto a la operacin de sustitucin, se toma la idea de la sustitucin por
desplazamiento, aunque tiene sus variantes, de la clave nos importa el residuo de sumar
sus componentes individuales y dividirlo entre el alfabeto (sin contar el caracter de
relleno, 37). Al sumar las magnitudes de la cadena obtenida del proceso de transposicin
con el residuo de la clave, el resultado corresponder una carcter del alfabeto, pero este
alfabeto estar escrito de manera invertida.
4. Para el residuo de la clave se considera un alfabeto de 37 posiciones, para el Criptograma
y Mcla un alfabeto de 38 posiciones

18
3. Cdigo Fuente Programa

package modelo;

import java.util.Arrays;

/**
*
* @author Arnulfo Quezada Borja
*/
public class Criptografia
{
private static char[] alfabeto =
{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','','o','p','q',
'r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','
0',''};
private static char[] alfabetoVolteado;

static
{
alfabetoVolteado = Criptografia.voltearArreglo(alfabeto);
}

public static String encripta(String cadena, String clave) //inicia


Proceso cifrado
{
char[] arregloCadena = cadena.toCharArray();
char[] arregloClave = clave.toCharArray();
int division = arregloCadena.length / 2;
char[] subarreglo1;
char[] subarreglo2;
if(arregloCadena.length % 2 != 0)
{
subarreglo1 = new char[division + 1];
subarreglo2 = new char[division + 1];
subarreglo2[subarreglo2.length-1] = '';
}
else
{
subarreglo1 = new char[division];
subarreglo2 = new char[division];
}
for(int i = 0, j = 0, k = 0; i < arregloCadena.length; i++)
{
if(i%2 == 0)
{
subarreglo1[j++] = arregloCadena[i];
}
else
{
subarreglo2[k++] = arregloCadena[i];
}
}

19
arregloCadena = concatenarArreglos(subarreglo1,
voltearArreglo(subarreglo2));
int[] valoresCadena = sustituirPorValor(arregloCadena);
int residuo = sumarValores(sustituirPorValor(arregloClave)) % 37;
valoresCadena = sumarValorAArreglo(valoresCadena, residuo);
arregloCadena = convierteACaracteres(valoresCadena);
return new String(arregloCadena);
}

public static String desencripta(String cadena, String clave)


//inicia Proceso descifrado
{
if(cadena.length() % 2 != 0)
{
throw new RuntimeException("Faltan caracteres en el
criptograma");
}
char[] arregloClave = clave.toCharArray();
int residuo = sumarValores(sustituirPorValor(arregloClave)) % 37;
char[] arregloCadena = cadena.toCharArray();
int[] valoresCadena = sustituirPorValorVolteado(arregloCadena);
arregloCadena =
converteACaracteresDesencripta(sumarValorAArreglo(valoresCadena, -
residuo));
int division = arregloCadena.length / 2;
char[] subarreglo1 = Arrays.copyOfRange(arregloCadena, 0,
division);
char[] subarreglo2 = Arrays.copyOfRange(arregloCadena, division,
arregloCadena.length);
subarreglo2 = voltearArreglo(subarreglo2);
for(int i = 0, j = 0, k = 0; i < arregloCadena.length; i++)
{
if(i%2 == 0)
{
arregloCadena[i] = subarreglo1[j++];
}
else
{
arregloCadena[i] = subarreglo2[k++];
}
}
if(arregloCadena[arregloCadena.length - 1] == '')
{
arregloCadena[arregloCadena.length - 1] = ' ';
}
return new String(arregloCadena);
}

private static char[] voltearArreglo(char[] arreglo)


{
char[] tmp = new char[arreglo.length];
for(int i = arreglo.length - 1, j = 0; i >= 0; i--, j++)
{
tmp[j] = arreglo[i];
}
return tmp;
}

20
private static char[] concatenarArreglos(char[] tmp1, char[] tmp2)
{
char[] nuevo = new char[tmp1.length + tmp2.length];
int j = 0;
for(int i = 0; i < tmp1.length; i++)
{
nuevo[j++] = tmp1[i];
}
for(int i = 0; i < tmp2.length; i++)
{
nuevo[j++] = tmp2[i];
}
return nuevo;
}

private static int[] sustituirPorValor(char[] arreglo)


{
int[] tmp = new int[arreglo.length];
for (int i = 0; i < arreglo.length; i++)
{
tmp[i] = buscarEnAlfabeto(arreglo[i]);
}
return tmp;
}

private static int buscarEnAlfabeto(char caracter)


{
for(int i = 0; i < alfabeto.length; i++)
{
if(alfabeto[i] == caracter)
{
return i + 1;
}
}
throw new RuntimeException("Se encontraron caracteres no vlidos
vuelva a intentarlo.");
}

private static int[] sustituirPorValorVolteado(char[] arreglo)


{
int[] tmp = new int[arreglo.length];
for (int i = 0; i < arreglo.length; i++)
{
tmp[i] = buscarEnAlfabetoVolteado(arreglo[i]);
}
return tmp;
}

private static int buscarEnAlfabetoVolteado(char caracter)


{
for(int i = 0; i < alfabetoVolteado.length; i++)
{
if(alfabetoVolteado[i] == caracter)
{
return i + 1;
}

21
}
throw new RuntimeException("Se encontraron caracteres no vlidos
vuelva a intentarlo.");
}

private static int sumarValores(int[] arreglo)


{
int suma = 0;
for (int i = 0; i < arreglo.length; i++)
{
suma += arreglo[i];
}
return suma;
}

private static int[] sumarValorAArreglo(int[] arreglo, int valor)


{
for(int i = 0; i < arreglo.length; i++)
{
arreglo[i] += valor;
}
return arreglo;
}

private static char[] convierteACaracteres(int[] valores)


{
char[] arreglo = new char[valores.length];
for(int i = 0; i < valores.length; i++)
{
if(valores[i] > 38)
{
valores[i] -= 38;
}
arreglo[i] = alfabetoVolteado[valores[i]-1];
}
return arreglo;
}

private static char[] converteACaracteresDesencripta(int[] valores)


{
char[] arreglo = new char[valores.length];
for(int i = 0; i < valores.length; i++)
{
if(valores[i] <= 0)
{
valores[i] += 38;
}
arreglo[i] = alfabeto[valores[i]-1];
}
return arreglo;
}
}

22
Rol de los integrantes
Quezada Borja Arnulfo

Diseo del algoritmo propio


Programacin del algoritmo propio
Realizacin de pruebas de algoritmo propio
Creacin e implementacin de la interfaz grfica para el algoritmo propio
Pruebas de la interfaz grfica del algoritmo propio

Argueta cortes Jairo I.

Diseo del algoritmo de Vernam


Programacin del algoritmo
Realizacin de pruebas del algoritmo
Creacin e implementacin de la interfaz grfica WEB para soportar todos los algoritmos
Realizacin de pruebas de la interfaz grfica.
Documentacin del proyecto

Prez Escalante Jaime R.

Desarrollo de los algoritmos e interfaz cifrado de Playfair y de Transposicin simple


Pruebas para cada uno de los algoritmos

Mendoza Gaytan Jos T.

Programacin del algoritmo de vignere.


Realizacin de pruebas del algoritmo de Vignere.
Programacin del algoritmo de Transposicin por grupos.
Realizacin de pruebas de Transposicin por grupos.

Montero Gonzlez Csar G.

Desarrollo de los algoritmos de Dezplazamiento y de Transposicin por series


Pruebas para cada uno de los algoritmos

23
Conclusiones/Comentarios
Quezada Borja Arnulfo B.

Con la realizacin del proyecto puedo concluir que la programacin de los algoritmo para la
implementacin de los cifradores clsicos conllevan a una integracin plana, sin dudarlo por
instante, de conocimientos y habilidades para su desarrollo, que fue uno de los puntos planteados
inicialmente; por otra parte pienso que el punto al respecta a la capacidad de trabajar en equipo,
no se alcanzo plenamente pues algunos nos cuesta mucho trabajo hacerlo, no hubo una
integracin total de las partes. Pese a esto creo que se consigui hacer un proyecto con calidad.

Argueta Cortes Jairo I.

La realizacin de este proyecto permiti valorar y considerar la importancia que tienen las
comunicaciones digitales en la actualidad, sabemos que es importante garantizar el secreto de
comunicacin entre dos entidades o individuos. Con la creacin de esta interfaz con cifradores
clsicos se dispone de una imprescindible herramienta para trabajar con mensajes que queremos
cifrar en un determinado momento. Este proyecto permiti poner en prctica los conocimientos
adquiridos en clase y ponerlos en prctica a travs de un lenguaje de programacin.

Prez Escalante Jaime R.

Ayudo mucho tener las reglas para cada uno de los mtodos empleados, sin embargo, se vuelve
diferente la forma de implementarlos en un programa, por el manejo de variables y de funciones
que haga que se pueda manipular el mtodo usando interfaz grafica para su uso.
Con esto se logro juntar aplicaciones y crear una herramienta de cifrado para los distintos
mtodos de la criptografa clsica y con esto hacer uso de corroborar ejercicios hechos a "mano" e
implementar en algn protocolo de comunicacin de red.

Mendoza Gaytan Jos T.

Este proyecto en primera instancia me sirvi para saber cmo es que funcionan ms a detalle
todos los algoritmos de encriptacin clsica, puesto que para poder programarlos se tiene que
realizar su anlisis a fondo de ellos para conocer el ms mnimo detalle de su funcionamiento, por
otra parte mencionar que la realizacin del proyecto me ayud a comprender un la importancia
que tiene el salvaguardar la informacin hoy en da y lo que representaba en tiempos pasados.

Otra cuestin importante de mencionar es que la otra finalidad del proyecto fue la de trabajar en
equipo, en cuanto a esto solo puedo mencionar que se dio la divisin pero por diferencia de
horarios y poca disponibilidad de tiempo no se pudo trabajar al 100% en equipo pero aun as se
pudo concluir con el proyecto de una forma exitosa.

24
Montero Gonzlez Csar G.

Al realizar el proyecto me di cuenta que para programar los algoritmos es necesario conocerlos a
la perfeccin para que el proceso de programacin sea ms rpido, a mi en particular me tocaron
los mtodos de desplazamiento y transposicin por series, el mtodo de desplazamiento en la
prctica y realizndolo en papel es de los ms sencillos pero me cost ms trabajo programarlo
que el de transposicin, ya que requiere de ms pasos para programarlo.

El proyecto se me hizo un poco largo pero al ser en equipo el trabajo se reparti, en nuestro
equipo en particular trabajamos bien y todos aportaron para la realizacin del mismo.

Bibliografa

Lpez Barrientos, Ma. Jaquelina. Criptografa, Mxico, Universidad Nacional Autnoma de Mxico,
Facultad de Ingeniera, 2009.

25

También podría gustarte