Está en la página 1de 100

UNIVERSIDAD NACIONAL JOS

FAUSTINO SNCHEZ CARRIN


FACULTAD DE INGENIERA INDUSTRIAL, SISTEMAS E INFORMTICA

ESCUELA ACADMICO PROFESIONAL:


INGENIERA INFORMTICA

MANUAL DE APLICACIONES
UTILIZANDO JAVA PARA EL MTODO
CRIPTOGRAFICO POLYBIOS

CRIPTOGRAFIA - I

DOCENTE:

Mg. Ing. Manuel Hilario

HUACHO-PERU
U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

DEDICATORIA:
Queremos dedicarle este
trabajo a Dios
Que nos ha dado la vida y fortaleza para
culminar este manual.
A nuestros padres por
estar all cuando
ms los necesitamos;
en especial a las madres por brindarnos su
ayuda y constante cooperacin en nuestras
vidas.

Muy especial a los Colaboradores:


- LEON CRISPIN, Mao Jovaldo
- LOPEZ CASTRO, Angello Jones
- LUIS MENDOZA, Samuel
- GUERRERO SANCHEZ, Weiner
Brayan

CURSO: CRIPTOGRAFIA I pg. 2


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

INDICE
I. PRESENTACION........................................................................................................................... 5
II. INTRODUCCION .......................................................................................................................... 6
III. CIFRADO DE POLYBIOS ........................................................................................................... 7
Ejemplo N1 ................................................................................................................................ 7
Ejemplo N2 ................................................................................................................................ 7
IV. SISTEMA DE NUMERACIN BINARIO ..................................................................................... 8
V. SISTEMA BINARIO EN POLYBIOS ................................................................................................ 9
Ejemplo N1.1 ........................................................................................................................... 10
Ejemplo N2.1 ........................................................................................................................... 10
PROGRAMA EN EXCEL DE POLYBIOS Y BINARIO .......................................................................... 11
VI. Sistema de Numeracin Octal .............................................................................................. 13
VII. Sistema Octal en Polybios .................................................................................................... 14
Ejemplo N1.2 ........................................................................................................................... 15
Ejemplo N2.2 ........................................................................................................................... 15
PROGRAMA EN EXCEL DE SISTEMA OCTANARIO ......................................................................... 16
VIII. SISTEMA DE NUMERACIN HEXADECIMAL ......................................................................... 18
IX. SISTEMA HEXADECIMAL EN POLYBIOS................................................................................. 19
Ejemplo N1.3 ........................................................................................................................... 20
Ejemplo N2.3 ........................................................................................................................... 20
X. LOS CARACTERES ASCII............................................................................................................. 21
CARACTERES DE CONTROL ASCII NO IMPRIMIBLES: .................................................................... 22
CARACTERES ASCII ALFANUMRICOS IMPRIMIBLES: ................................................................... 23
CARACTERES ASCII EXTENDIDOS IMPRIMIBLES: .......................................................................... 26
Ejemplo N1.4 ........................................................................................................................... 30
Ejemplo N2.4 ........................................................................................................................... 30
XI. MANUAL DEL PROGRAMA EN JAVA ..................................................................................... 31
PARA CIFRAR LAS PALABRAS SE HACE DE LA SIGUIENTE FORMA ................................................ 32
PARA DESCIFRAR LAS PALABRAS SE HACE DE LA SIGUIENTE FORMA.......................................... 37
PARA GUARDAR REGISTROS DE CIFRADO O DESCIFRADO........................................................... 39
LA FUNCIONALIDADES DE LOS BOTONES EN LA INTERFAZ PRINCIPAL ........................................ 40
XII. ANEXOS ................................................................................................................................ 42
CODIGO EN JAVA DE LA CLASE CLAVE .......................................................................................... 42
CODIGO CLASE CLAVESTRING ...................................................................................................... 44
CODIGO CLASE REGISTROTO ........................................................................................................ 48

CURSO: CRIPTOGRAFIA I pg. 3


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CDIGO DE LA VENTA EN JAVA ACERCA ...................................................................................... 49


CDIGO EN JAVA DE LA CLASE ADMINISTRAR CLAVES ................................................................ 54
CDIGO EN JAVA DE LA CLASE FAVORITOS ................................................................................. 59
CDIGO EN JAVA DE LA CLASE GUI .............................................................................................. 64
CDIGO EN JAVA DE LA CLASE INTRO .......................................................................................... 89
CDIGO EN JAVA DE LA CLASE TABLA NUEVA PESTAA ............................................................. 92
CDIGO EN JAVA DE LA CLASE ELEGIR OPCIN ........................................................................... 97
XIII. BIBILIOGRAFIA .................................................................................................................... 100

CURSO: CRIPTOGRAFIA I pg. 4


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

I. PRESENTACION
En el presente manual daremos a conocer algunos sistemas de

numeracin con sus respectivas definiciones de cada uno, el cual

permitir armar el cifrado de polybios, el cual sirve para ocultar y

darle seguridad a la informacin.

El cifrado de polybios permite sustituir caracteres, en este caso el

objetivo ser sustituir los caracteres que son las letras del

abecedario del A hasta Z por nmeros aleatorios de cada uno de

los sistemas de Numeracin respectivos, lo cual esos nmeros

escogidos son en base 10 convertidos a otro sistema numeracin.

CURSO: CRIPTOGRAFIA I pg. 5


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

II. INTRODUCCION
En la primera parte del manual daremos a conocer la definicin del

cifrado de polybios, luego daremos a conocer el sistema binario, su

conversin y algunos ejemplos, para saber cmo se convierte de

decimal a binario y viceversa, con los nmeros binarios obtenidos

se escoge aleatoriamente algunos nmeros y se hace el armado en

el cifrado de polybios, luego con la tabla, se presentar algunos

ejemplos, lo cual tendr el mismo desarrollo para el sistema octal y

hexadecimal, adems de ello se presentar una aplicacin de

conversin de sistema decimal al sistema octal tambin una

aplicacin para el sistema hexadecimal, para finalizar se explicara

los cdigos ascii su definicin, su armado con el cifrado de polybios

y algunos ejemplos.

CURSO: CRIPTOGRAFIA I pg. 6


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

III. CIFRADO DE POLYBIOS


Es el cifrador por sustitucin de caracteres ms antiguo que se conoce. Es bastante
rudimentario, consista en conseguir una correspondencia de una letra con otro mediante
una matriz en la que estaba el alfabeto completo, segn el siguiente esquema 1.

Tabla N1 Tabla N2

El mtodo, consiste en hacer corresponder la letra que se deseaba ocultar con otras dos
segn la fila y la columna de la matriz a la que le perteneca.

Ejemplo N1
La palabra C R I P T O G R A F I A
AC DB BD CE DD CD BB DB AA BA BD AA
13 42 24 35 44 34 22 42 11 21 24 11

Ejemplo N2
El nombre UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION
DECCBDFBAEDBDCBDADAAAD CCAAACBDCDCCAACA BDCDDCAE
BAAADEDCDDBDCCCD DCAACCACBCAEFE ACAADBDBBDCDCC

(1)
2012, https://es.wikipedia.org/wiki/Cuadrado_de_Polibio

CURSO: CRIPTOGRAFIA I pg. 7


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

IV. SISTEMA DE NUMERACIN BINARIO


El sistema de numeracin Binario o cdigo binario es un sistema numrico utilizado para
representar textos, datos o simplemente para procesar instrucciones en una computadora
o en un dispositivo informtico de cualquier tipo. Dicho sistema de numeracin como su
nombre lo indica se basa en slo dos dgitos bits el cero 0 y el uno 1 2.

El mtodo ms comn consiste en dividir la cantidad del sistema decimal entre 2, el


nmero entero que da como resultado se divide nuevamente entre 2, de forma sucesiva
hasta que el dividendo resulta inferior al divisor. Hecho esto, los restos de cada divisin
se ordenan desde el ltimo resto hasta el primero 3.

De este modo, si queremos expresar el nmero 149 en el sistema binario, haremos lo


siguiente:

Transformacin de la Parte Entera a Binario


149 / 2 = 74 (resto = 1)
74 / 2 = 37 (resto = 0)
37 / 2 = 18 (resto = 1)
18 / 2 = 9 (resto = 0)
9 / 2 = 4 (resto = 1)
4 / 2 = 2 (resto = 0)
2 / 2 = 1 (resto = 0)
1 / 2 = 1 (resto = 1)

10010101 Es igual al nmero (149)

Transformacin de la Decimal Entera a Binario


0.375 * 2 = 0.75
0.75 * 2 = 1.50
0.50 * 2 = 1.00
0.00 * 2 = 0.00
0.00 * 2 = 0.00

.011 Es igual al nmero (0.375)

149.375(10) = 10010101.011(2)

(2)
Prez Porto,2014, https://definicion.de/sistema-binario/
(3)
Gardey,2014, https://definicion.de/sistema-binario/

CURSO: CRIPTOGRAFIA I pg. 8


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

V. SISTEMA BINARIO EN POLYBIOS


Nmero binario
1001 es igual a decir 9
Transformacin de un nmero Binario a Decimal

Binarios 1 0 0 1

23 22 21 20

Suma la fila 8 0 0 1 8+0+0+1=9

1111 es igual a decir 15


Binarios 1 1 1 1

23 22 21 20

Suma la fila 8 4 2 1 8+4+2+1=15

- 0111 es igual a decir 7


o

Binarios 0 1 1 1

23 22 21 20

Suma la fila 0 4 2 1 4+2+1=7

- 0101 es igual a decir 5


o

Binarios 0 1 0 1

23 22 21 20

Suma la fila 0 4 0 1 4+1=5

- 0100 es igual a decir 8


o

Binarios 1 0 0 0

23 22 21 20

Suma la fila 8 0 0 0 8

CURSO: CRIPTOGRAFIA I pg. 9


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

1001(2) 1111(2) 0111(2) 0101(2) 0100(2)


9(10) 15(10) 7(10) 5(10) 8(10)

1001(2) A B C D E
9(10) (01000001) (01000010) (01000011) (01000100) (01000101)

1111(2) F G H IJ K
15(10) (01000110) (01000111) (01001000) (01001001) (01001011)

0111(2) L M N O P
7(10) (01001100) (01001101) (01001110) (01001111) (01010000)

0101(2) Q R S T U
5(10) (01010001) (01010010) (01010011) (01010100) (01010101)

0100(2) V W X Y Z
8(10) (01010110) (01010111) (01011000) (01011001) (01011010)

Table N3
Elaboracin propia

Ejemplo N1.1
La palabra CRIPTOGRAFA en binario
10010111 01011111 11111001 01110100 01011001 01111001 11111111
01011111 10011001 11111001 11111001 10011001

Ejemplo N2.1
- El nombre UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION
en binario
o 01010100001110111111101010100100110010100010111110101011111
110101100101011001100110010101
01110111100110011001011111110101011101010111011110011001011
11001 11110101011101010101011110010100
11111001100110010101010001010111010101011111010101110111011
10101
01010111100110010111011110010111111101111001010001010111
10010111100110010101111101011111111101010111010101110111

CURSO: CRIPTOGRAFIA I pg. 10


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

PROGRAMA EN EXCEL DE POLYBIOS Y BINARIO


Para realizar el programa de Excel utilizaremos una tabla de Excel como
referencia:

Tabla N4
Elaboracin propia

- Luego poner los datos en forma de matriz en Excel en dos columnas

Tabla N5
Elaboracin propia

CURSO: CRIPTOGRAFIA I pg. 11


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

Escribimos el nombre y cada letra

- Escribir la letra L su frmula:


- =SI.ND(BUSCAR(B10;$Q$9:$R$34);"")
- Escribir la letra E su frmula:
- =SI.ND(BUSCAR(D10;$Q$9:$R$34);"")
- Escribir la letra O su frmula:
- =SI.ND(BUSCAR(F10;$Q$9:$R$34);"")
- Escribir la letra N su frmula:
- =SI.ND(BUSCAR(H10;$Q$9:$R$34);"")

Tabla N6
Elaboracin propia

CURSO: CRIPTOGRAFIA I pg. 12


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

VI. Sistema de Numeracin Octal


El sistema numrico en base 8 se llama octal y utiliza los dgitos del 0 al 7. En

informtica a veces se utiliza la numeracin octal en vez de la hexadecimal. Tiene la

ventaja de que no requiere utilizar otros smbolos diferentes de los dgitos 4.

Su base que es potencia exacta de 2 o de la numeracin binaria. Esta caracterstica

hace que la conversin a binario o viceversa sea bastante simple. El sistema octal usa 8

dgitos (0, 1, 2, 3, 4, 5, 6, 7) y tienen el mismo valor que en el sistema de numeracin

decimal 5.

De este modo daremos un ejemplo de la conversin del sistema decimal al octonario:

Para formarlo se toman todos los residuos 6.

1) Por ejemplo, el nmero: 250475(10) a base 8

250475 / 8 = 31309 residuo (3)

31309 / 8 = 3913 residuo (5)

3913 / 8 = 489 residuo (1)

489 / 8 = 61 residuo (1)

61 / 8 =7 residuo (5)

7 / 8 =7 residuo (7)

El nmero decimal 250475(10) es 751153(8)

2) Por ejemplo, el nmero: 1231221(10) a base 8

1231221 / 8 = 153902 residuo (5)

153902 / 8 = 19237 residuo (6)

19237 / 8 = 2404 residuo (5)

2404 / 8 = 300 residuo (4)

300 / 8 = 37 residuo (4)

37 / 8=4 residuo (5)

4 / 8=4 residuo (4)

El nmero decimal 1231221(10) es 4544565(8)

(4)
Pulido, 2009, https://es.wikipedia.org/wiki/Sistema_octal
(5)
Perez,2012, https://es.slideshare.net/campeon23479/sistema-octal-14032143
(6)
Perez,2012, https://es.slideshare.net/campeon23479/sistema-octal-14032143
CURSO: CRIPTOGRAFIA I pg. 13
U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

VII. Sistema Octal en Polybios


Tabla de Polybios extendida utilizando como claves nmeros octonarios para hacer el

cifrado.

Para ellos escogemos nmeros al azar en base 10 y lo convertimos a la base 8:

1) 14510 = 1 * 82 + 4 * 81 + 5* 80 = 2218

2) 24510 = 2 * 82 + 4 * 81 + 5* 80 = 3658

3) 39810 = 3 * 82 + 9 * 81 + 8* 80 = 6168

4) 17010 = 1 * 82 + 7 * 81 + 0* 80 = 2528

5) 50110 = 5 * 82 + 0 * 81 + 1* 80 = 7658

6) 45110 = 4 * 82 + 5 * 81 + 1* 80 = 7038

7) 45210 = 4 * 82 + 5 * 81 + 2* 80 = 7048

8) 12310 = 1 * 82 + 2 * 81 + 3 80 = 1738

9) 25410 = 2 * 82 + 5* 81 + 4* 80 = 3768

10) 38910 = 3 * 82 + 8 * 81 + 9* 80 = 6058

CURSO: CRIPTOGRAFIA I pg. 14


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA


( ) ( ) ( ) ( ) ( )

A B C D E
( )

F G H IJ K
( )

M N O P
( )

Q R S T U
( )

V W X Y Z
( )

Tabla N7
Elaboracin propia

Ejemplo N1.2
La palabra CRIPTOGRAFA en binario
10010111 01011111 11111001 01110100 01011001 01111001 11111111
01011111 10011001 11111001 11111001 10011001
Ejemplo N2.2
- El nombre UNIVERSIDAD NACIONAL JOSE FAUSTINO SNCHEZ CARRIN
o 36776517361670425260522170376537636537661670425270325270322
1703252 173616703221703616704252173253173616703221173221
704252173252376616703765
70422170322137676537616376252704252173616173252
376616703221376365376365704252173252173616
703616703221376365376365704252173252173616

CURSO: CRIPTOGRAFIA I pg. 15


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

PROGRAMA EN EXCEL DE SISTEMA OCTANARIO


Para realizar el programa de Excel utilizaremos una tabla de Excel como
referencia:

Tabla N8
Elaboracin propia

- Luego poner los datos en forma de matriz en Excel en dos columnas

Tabla N9
Elaboracin propia

CURSO: CRIPTOGRAFIA I pg. 16


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

- Escribimos el nombre y cada letra

Tabla N10
Elaboracin propia
- Escribir la letra A su frmula:
=BUSCAR(D16;$A$15:$B$40)
- Escribir la letra N su frmula:
=BUSCAR(E16;$A$15:$B$40)
- Escribir la letra G su frmula:
=BUSCAR(F16;$A$15:$B$40)
- Escribir la letra E su frmula:
=BUSCAR(G16;$A$15:$B$40)
- Escribir la letra L su frmula:
=BUSCAR(H16;$A$15:$B$40)
- Escribir la letra L su frmula:
=BUSCAR(I16;$A$15:$B$40)
- Escribir la letra O su frmula:
=BUSCAR(J16;$A$15:$B$40)
- Espacio en blanco para que se llene automtico
= SI.ND(BUSCAR (K16;$A$15:$B$40);"")
Lo cual solo con el valor de la primer letras la frmula de la primera
letra se genera los dems.

Tabla N11
Elaboracin propia

CURSO: CRIPTOGRAFIA I pg. 17


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

VIII. SISTEMA DE NUMERACIN HEXADECIMAL


El sistema de numeracin Hexadecimal es el sistema de numeracin posicional que

tiene como base el nmero 16.

Su uso actual est muy vinculado a la informtica y ciencias de la computacin donde las

operaciones de la CPU suelen usar el byte u octeto como unidad bsica de memoria; y,

debido a que un byte representa 28 valores posibles, y esto puede representarse como

28 = 24 24 = 16 16 = 1 162 + 0 161 + 0. 160

que equivale a los nmeros , 25610 , 11001002 , 4008 que corresponden

exactamente a un byte 7.

Tabla N12

El mtodo ms comn para convertir un nmero decimal a hexadecimal consiste en

dividir la cantidad del sistema decimal entre 16, el nmero entero que da como resultado

se divide nuevamente entre 16, de forma sucesiva hasta que el dividendo resulta inferior

al divisor.

Hecho esto, los restos de cada divisin se ordenan desde el ltimo resto hasta el primero.

De este modo, si queremos expresar el nmero 491 en el sistema hexadecimal, haremos

lo siguiente.

491 / 16 = 30 residuo (11)

30 / 16 = 1 residuo (14)

1 14 11 1 E B

(7)
Natharael, 2014, https://es.wikipedia.org/wiki/Sistema_hexadecimal

CURSO: CRIPTOGRAFIA I pg. 18


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

IX. SISTEMA HEXADECIMAL EN POLYBIOS


Tabla de Polybios extendida utilizando como claves nmeros hexadecimales:

Para las claves escogemos 11 nmeros al azar en base 16 y lo convertimos a la base 10

para que se vea su equivalencia:

1) 916 = 9 1016 = 9 * 161 + 10 * 160 = 15410

2) 916 = 9 1116 = 9 * 161 +11 * 160 = 15510

3) 916 = 9 1216 = 9 * 161 + 12 * 160 = 15610

4) 916 = 9 1316 = 9 * 161 +13 * 160 = 15710

5) 916 = 9 1416 = 9 * 161 + 14 * 160 = 15810

6) 916 = 9 1516 = 9 * 161 +15 * 160 = 15910


7) 216 = 2 1016 = 2 * 161 + 10 * 160 = 4210

8) 216 = 2 1116 = 2 * 161 +11 * 160 = 4310

9) 216 = 2 1216 = 2 * 161 + 12 * 160 = 4410

10) 216 = 2 1316 = 2 * 161 +13 * 160 = 4510

11) 216 = 2 1416 = 2 * 161 + 14 * 160 = 4610

CURSO: CRIPTOGRAFIA I pg. 19


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA



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

Tabla N13
Elaboracin propia

Ejemplo N1.3
La palabra CRIPTOGRAFA
2A9C 2D9A 2B9C 2C9E 2D9C 2C9D 2B9A 2D9A 2A9A 2A2F 2B9C 2A9A
Ejemplo N2.3
- El nombre UNIVERSIDAD NACIONAL JOSE FAUSTINO SNCHEZ CARRIN
o D9D2C9B2B9C2D9E2A9E2D9A2D9B2B9C2A9D2A9A2A9
2C9B2A9A2A9C2B9C2C9D2C9B2A9A2B9F 2B9D2C9D2D9B2E9E
2A9F2A9A2D9D2D9B2D9C2B9C2C9B2C9D
2D9B2E9D2C9B2A9C2B9B2A9E2E9C
2A9C2A9A2D9A2D9A2B9C2E9F2C9B

CURSO: CRIPTOGRAFIA I pg. 20


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

X. LOS CARACTERES ASCII


EL CDIGO ASCII reserva los primeros 32 cdigos (numerados del 0 al 31 en decimal)
para caracteres de control: cdigos no pensados originalmente para representar
informacin imprimible, sino para controlar dispositivos (como impresoras) que usaban
ASCII. Por ejemplo, el carcter 10 representa la funcin "nueva lnea" (line feed), que
hace que una impresora avance el papel, y el carcter 27 representa la tecla "escape"
que a menudo se encuentra en la esquina superior izquierda de los teclados comunes. El
cdigo 127 (los siete bits a uno), otro carcter especial, equivale a "suprimir" ("delete") 8.

Tabla N14
Pgina: http://www.elcodigoascii.com.ar/

(8)
http://www.elcodigoascii.com.ar/

CURSO: CRIPTOGRAFIA I pg. 21


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CARACTERES DE CONTROL ASCII NO IMPRIMIBLES:


cdigo ASCII 00 = NULL ( Carcter nulo )
cdigo ASCII 01 = SOH ( Inicio de encabezado )
cdigo ASCII 02 = STX ( Inicio de texto )
cdigo ASCII 03 = ETX ( Fin de texto, palo corazn barajas inglesas de poker )
cdigo ASCII 04 = EOT ( Fin de transmisin, palo diamantes barajas de poker )
cdigo ASCII 05 = ENQ ( Consulta, palo trboles barajas inglesas de poker )
cdigo ASCII 06 = ACK ( Reconocimiento, palo picas cartas de poker )
cdigo ASCII 07 = BEL ( Timbre )
cdigo ASCII 08 = BS ( Retroceso )
cdigo ASCII 09 = HT ( Tabulador horizontal )
cdigo ASCII 10 = LF ( Nueva lnea - salto de lnea )
cdigo ASCII 11 = VT ( Tabulador vertical )
cdigo ASCII 12 = FF ( Nueva pgina - salto de pgina )
cdigo ASCII 13 = CR ( ENTER - retorno de carro )
cdigo ASCII 14 = SO ( Desplazamiento hacia afuera )
cdigo ASCII 15 = SI ( Desplazamiento hacia adentro )
cdigo ASCII 16 = DLE ( Escape de vnculo de datos )
cdigo ASCII 17 = DC1 ( Control dispositivo 1 )
cdigo ASCII 18 = DC2 ( Control dispositivo 2 )
cdigo ASCII 19 = DC3 ( Control dispositivo 3 )
cdigo ASCII 20 = DC4 ( Control dispositivo 4 )
cdigo ASCII 21 = NAK ( Confirmacin negativa )
cdigo ASCII 22 = SYN ( Inactividad sincrnica )
cdigo ASCII 23 = ETB ( Fin del bloque de transmisin )
cdigo ASCII 24 = CAN ( Cancelar )
cdigo ASCII 25 = EM ( Fin del medio )
cdigo ASCII 26 = SUB ( Sustitucin )
cdigo ASCII 27 = ESC ( Esc - escape )
cdigo ASCII 28 = FS ( Separador de archivos )
cdigo ASCII 29 = GS ( Separador de grupos )
cdigo ASCII 30 = RS ( Separador de registros )
cdigo ASCII 31 = US ( Separador de unidades )
cdigo ASCII 127 = DEL ( DEL - Suprimir, borrar, eliminar )

CURSO: CRIPTOGRAFIA I pg. 22


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CARACTERES ASCII ALFANUMRICOS IMPRIMIBLES:


cdigo ASCII 32 = espacio (Espacio en blanco)
cdigo ASCII 33 =! ( Signos de exclamacin, signo de admiracin )
cdigo ASCII 34 = " ( Comillas dobles , comillas altas o inglesas )
cdigo ASCII 35 = # ( Signo numeral o almohadilla )
cdigo ASCII 36 = $ ( Signo pesos )
cdigo ASCII 37 = % ( Signo de porcentaje - por ciento )
cdigo ASCII 38 = & ( Y - ampersand - et latina )
cdigo ASCII 39 = ' ( Comillas simples, apstrofe )
cdigo ASCII 40 = ( ( Abre parntesis )
cdigo ASCII 41 = ) ( Cierra parntesis )
cdigo ASCII 42 = * ( Asterisco )
cdigo ASCII 43 = + ( Signo ms, suma, positivo )
cdigo ASCII 44 = , ( Coma )
cdigo ASCII 45 = - ( Signo menos , resta , negativo , guin medio )
cdigo ASCII 46 = . ( Punto )
cdigo ASCII 47 = / ( Barra inclinada, divisin, operador cociente )
cdigo ASCII 48 = 0 ( Nmero cero )
cdigo ASCII 49 = 1 ( Nmero uno )
cdigo ASCII 50 = 2 ( Nmero dos )
cdigo ASCII 51 = 3 ( Nmero tres )
cdigo ASCII 52 = 4 ( Nmero cuatro )
cdigo ASCII 53 = 5 ( Nmero cinco )
cdigo ASCII 54 = 6 ( Nmero seis )
cdigo ASCII 55 = 7 ( Nmero siete )
cdigo ASCII 56 = 8 ( Nmero ocho )
cdigo ASCII 57 = 9 ( Nmero nueve )
cdigo ASCII 58 = : ( Dos puntos )
cdigo ASCII 59 = ; ( Punto y coma )
cdigo ASCII 60 = < ( Menor que )
cdigo ASCII 61 = = ( Signo igual, igualdad, igual que )
cdigo ASCII 62 = > ( Mayor que )
cdigo ASCII 63 = ? ( Cierra signo interrogacin )
cdigo ASCII 64 = @ ( Arroba )

CURSO: CRIPTOGRAFIA I pg. 23


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

cdigo ASCII 65 = A ( Letra A mayscula )


cdigo ASCII 66 = B ( Letra B mayscula )
cdigo ASCII 67 = C ( Letra C mayscula )
cdigo ASCII 68 = D ( Letra D mayscula )
cdigo ASCII 69 = E ( Letra E mayscula )
cdigo ASCII 70 = F ( Letra F mayscula )
cdigo ASCII 71 = G ( Letra G mayscula )
cdigo ASCII 72 = H ( Letra H mayscula )
cdigo ASCII 73 = I ( Letra I mayscula )
cdigo ASCII 74 = J ( Letra J mayscula )
cdigo ASCII 75 = K ( Letra K mayscula )
cdigo ASCII 76 = L ( Letra L mayscula )
cdigo ASCII 77 = M ( Letra M mayscula )
cdigo ASCII 78 = N ( Letra N mayscula )
cdigo ASCII 79 = O ( Letra O mayscula )
cdigo ASCII 80 = P ( Letra P mayscula )
cdigo ASCII 81 = Q ( Letra Q mayscula )
cdigo ASCII 82 = R ( Letra R mayscula )
cdigo ASCII 83 = S ( Letra S mayscula )
cdigo ASCII 84 = T ( Letra T mayscula )
cdigo ASCII 85 = U ( Letra U mayscula )
cdigo ASCII 86 = V ( Letra V mayscula )
cdigo ASCII 87 = W ( Letra W mayscula )
cdigo ASCII 88 = X ( Letra X mayscula )
cdigo ASCII 89 = Y ( Letra Y mayscula )
cdigo ASCII 90 = Z ( Letra Z mayscula )
cdigo ASCII 91 = [ ( Abre corchetes )
cdigo ASCII 92 = \ ( Barra invertida , contrabarra , barra inversa )
cdigo ASCII 93 = ] ( Cierra corchetes )
cdigo ASCII 94 = ^ ( Intercalacin - acento circunflejo )
cdigo ASCII 95 = _ ( Guin bajo , subrayado , subguin )
cdigo ASCII 96 = ` ( Acento grave )
cdigo ASCII 97 = a ( Letra a minscula )
cdigo ASCII 98 = b ( Letra b minscula )

CURSO: CRIPTOGRAFIA I pg. 24


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

cdigo ASCII 99 = c ( Letra c minscula )


cdigo ASCII 100 = d ( Letra d minscula )
cdigo ASCII 101 = e ( Letra e minscula )
cdigo ASCII 102 = f ( Letra f minscula )
cdigo ASCII 103 = g ( Letra g minscula )
cdigo ASCII 104 = h ( Letra h minscula )
cdigo ASCII 105 = i ( Letra i minscula )
cdigo ASCII 106 = j ( Letra j minscula )
cdigo ASCII 107 = k ( Letra k minscula )
cdigo ASCII 108 = l ( Letra l minscula )
cdigo ASCII 109 = m ( Letra m minscula )
cdigo ASCII 110 = n ( Letra n minscula )
cdigo ASCII 111 = o ( Letra o minscula )
cdigo ASCII 112 = p ( Letra p minscula )
cdigo ASCII 113 = q ( Letra q minscula )
cdigo ASCII 114 = r ( Letra r minscula )
cdigo ASCII 115 = s ( Letra s minscula )
cdigo ASCII 116 = t ( Letra t minscula )
cdigo ASCII 117 = u ( Letra u minscula )
cdigo ASCII 118 = v ( Letra v minscula )
cdigo ASCII 119 = w ( Letra w minscula )
cdigo ASCII 120 = x ( Letra x minscula )
cdigo ASCII 121 = y ( Letra y minscula )
cdigo ASCII 122 = z ( Letra z minscula )
cdigo ASCII 123 = { ( Abre llave curva - llaves curvas )
cdigo ASCII 124 = | ( Barra vertical, pleca , lnea vertical )
cdigo ASCII 125 = } ( Cierra llave - llaves curvas )
cdigo ASCII 126 = ~ ( Signo de equivalencia , tilde o virgulilla de la )

CURSO: CRIPTOGRAFIA I pg. 25


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CARACTERES ASCII EXTENDIDOS IMPRIMIBLES:


cdigo ASCII 128 = ( Letra C cedilla mayscula )
cdigo ASCII 129 = ( Letra u minscula con diresis )
cdigo ASCII 130 = ( Letra e minscula con acento agudo )
cdigo ASCII 131 = ( Letra a minscula con acento circunflejo )
cdigo ASCII 132 = ( Letra a minscula con diresis )
cdigo ASCII 133 = ( Letra a minscula con acento grave )
cdigo ASCII 134 = ( Letra a minscula con anillo )
cdigo ASCII 135 = ( Letra c cedilla minscula )
cdigo ASCII 136 = ( Letra e minscula con acento circunflejo )
cdigo ASCII 137 = ( Letra e minscula con diresis )
cdigo ASCII 138 = ( Letra e minscula con acento grave )
cdigo ASCII 139 = ( Letra i minscula con diresis )
cdigo ASCII 140 = ( Letra i minscula con acento circunflejo )
cdigo ASCII 141 = ( Letra i minscula con acento grave )
cdigo ASCII 142 = ( Letra A mayscula con diresis )
cdigo ASCII 143 = ( Letra A mayscula con anillo )
cdigo ASCII 144 = ( Letra E mayscula con acento agudo )
cdigo ASCII 145 = ( Diptongo latino ae minscula )
cdigo ASCII 146 = ( Diptongo latino AE mayscula )
cdigo ASCII 147 = ( Letra o minscula con acento circunflejo )
cdigo ASCII 148 = ( Letra o minscula con diresis )
cdigo ASCII 149 = ( Letra o minscula con acento grave )
cdigo ASCII 150 = ( Letra u minscula con acento circunflejo )
cdigo ASCII 151 = ( Letra u minscula con acento grave )
cdigo ASCII 152 = ( Letra y minscula con diresis )
cdigo ASCII 153 = ( Letra O mayscula con diresis )
cdigo ASCII 154 = ( Letra U mayscula con diresis )
cdigo ASCII 155 = ( Letra o minscula con barra inclinada )
cdigo ASCII 156 = ( Signo Libra Esterlina )
cdigo ASCII 157 = ( Letra O mayscula con barra inclinada )
cdigo ASCII 158 = ( Signo de multiplicacin )
cdigo ASCII 159 = ( Smbolo de funcin, florn neerlands )
cdigo ASCII 160 = ( Letra a minscula con acento agudo )

CURSO: CRIPTOGRAFIA I pg. 26


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

cdigo ASCII 161 = ( Letra i minscula con acento agudo )


cdigo ASCII 162 = ( Letra o minscula con acento agudo )
cdigo ASCII 163 = ( Letra u minscula con acento agudo )
cdigo ASCII 164 = ( Letra ee minscula - letra n con tilde - enie )
cdigo ASCII 165 = ( Letra EE mayscula - letra N con tilde - ENIE )
cdigo ASCII 166 = ( Ordinal femenino, indicador de gnero femenino )
cdigo ASCII 167 = ( Ordinal masculino, indicador de gnero masculino )
cdigo ASCII 168 = ( Abre signo interrogacin )
cdigo ASCII 169 = ( Smbolo de Marca Registrada )
cdigo ASCII 170 = ( Signo de negacin )
cdigo ASCII 171 = ( Un medio, mitad, fraccin )
cdigo ASCII 172 = ( Un cuarto, cuarta parte, fraccin )
cdigo ASCII 173 = ( Abre signos de exclamacin, signo de admiracin )
cdigo ASCII 174 = ( Abre comillas bajas, angulares, latinas o espaolas )
cdigo ASCII 175 = ( Cierra comillas bajas, angulares, latinas o espaolas )
cdigo ASCII 176 = ( Bloque color tramado densidad baja, carcter grfico )
cdigo ASCII 177 = ( Bloque color tramado densidad media, grfico )
cdigo ASCII 178 = ( Bloque color tramado densidad alta, carcter grfico )
cdigo ASCII 179 = ( Lnea simple vertical de recuadro grfico )
cdigo ASCII 180 = ( Lnea vertical con empalme de recuadro grfico )
cdigo ASCII 181 = ( Letra a mayscula con acento agudo )
cdigo ASCII 182 = ( Letra A mayscula con acento circunflejo )
cdigo ASCII 183 = ( Letra A mayscula con acento grave )
cdigo ASCII 184 = ( Smbolo Copyright, bajo derecho de autor )
cdigo ASCII 185 = ( Doble lnea vertical empalme izquierdo, grfico )
cdigo ASCII 186 = ( Lneas doble vertical de recuadro grfico, verticales )
cdigo ASCII 187 = ( Lnea doble esquina superior derecha de recuadro )
cdigo ASCII 188 = ( Lnea doble esquina inferior derecha de recuadro )
cdigo ASCII 189 = ( Signo centavo, cntimo o centsimo )
cdigo ASCII 190 = ( Signo monetario YEN japons, YUAN chino )
cdigo ASCII 191 = ( Lnea simple esquina de recuadro grfico )
cdigo ASCII 192 = ( Lnea simple esquina de recuadro grfico )
cdigo ASCII 193 = ( Lnea horizontal con empalme de recuadro grfico )
cdigo ASCII 194 = ( Lnea horizontal con empalme de recuadro grfico )

CURSO: CRIPTOGRAFIA I pg. 27


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

cdigo ASCII 195 = ( Lnea vertical con empalme de recuadro grfico )


cdigo ASCII 196 = ( Lnea simple horizontal de recuadro grfico )
cdigo ASCII 197 = ( Lneas simples empalmes de recuadro grfico )
cdigo ASCII 198 = ( Letra a minscula con tilde )
cdigo ASCII 199 = ( Letra A mayscula con tilde )
cdigo ASCII 200 = ( Lnea doble esquina inferior izquierda de recuadro )
cdigo ASCII 201 = ( Lnea doble esquina superior izquierda de recuadro )
cdigo ASCII 202 = ( Doble lnea horizontal empalme arriba, recuadro )
cdigo ASCII 203 = ( Doble lnea horizontal empalme abajo, recuadro )
cdigo ASCII 204 = ( Doble lnea vertical empalme derecho, recuadro )
cdigo ASCII 205 = ( Lneas doble horizontales de recuadro grfico )
cdigo ASCII 206 = ( Lneas dobles cruce de lneas de recuadro grfico )
cdigo ASCII 207 = ( Signo monetario - divisa general )
cdigo ASCII 208 = ( Letra eth latina minscula )
cdigo ASCII 209 = ( Letra eth latina mayscula )
cdigo ASCII 210 = ( Letra E mayscula con acento circunflejo )
cdigo ASCII 211 = ( Letra E mayscula con diresis )
cdigo ASCII 212 = ( Letra E mayscula con acento grave )
cdigo ASCII 213 = ( Letra minscula i sin punto )
cdigo ASCII 214 = ( Letra i mayscula con acento agudo )
cdigo ASCII 215 = ( Letra I mayscula con acento circunflejo )
cdigo ASCII 216 = ( Letra i mayscula con diresis )
cdigo ASCII 217 = ( Lnea simple esquina de recuadro grfico )
cdigo ASCII 218 = ( Lnea simple esquina de recuadro grfico )
cdigo ASCII 219 = ( Bloque color pleno slido, carcter grfico )
cdigo ASCII 220 = ( Medio bloque negro, mitad inferior, carcter grfico )
cdigo ASCII 221 = ( Barra vertical partida )
cdigo ASCII 222 = ( Letra I mayscula con acento grave )
cdigo ASCII 223 = ( Medio bloque negro, mitad superior, carcter grfico )
cdigo ASCII 224 = ( Letra o mayscula con acento agudo )
cdigo ASCII 225 = ( Letra alemana eszett o ese-zeta )
cdigo ASCII 226 = ( Letra O mayscula con acento circunflejo )
cdigo ASCII 227 = ( Letra O mayscula con acento grave )
cdigo ASCII 228 = ( Letra o minscula con tilde )

CURSO: CRIPTOGRAFIA I pg. 28


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

cdigo ASCII 229 = ( Letra O mayscula con tilde )


cdigo ASCII 230 = ( Signo micro )
cdigo ASCII 231 = ( Letra latina thorn minscula )
cdigo ASCII 232 = ( Letra latina thorn mayscula )
cdigo ASCII 233 = ( Letra U mayscula con acento agudo )
cdigo ASCII 234 = ( Letra U mayscula con acento circunflejo )
cdigo ASCII 235 = ( Letra U mayscula con acento grave )
cdigo ASCII 236 = ( Letra y minscula con acento agudo )
cdigo ASCII 237 = ( Letra Y mayscula con acento agudo )
cdigo ASCII 238 = ( Macron (marca larga), superguin, guin alto )
cdigo ASCII 239 = ( Acento agudo )
cdigo ASCII 240 = ( Smbolo matemtico de congruencia, equivalencia )
cdigo ASCII 241 = ( Signo ms menos )
cdigo ASCII 242 = ( ASCII 242 )
cdigo ASCII 243 = ( Tres cuartos, fraccin )
cdigo ASCII 244 = ( Fin de prrafo - signo de caldern )
cdigo ASCII 245 = ( Signo de seccin )
cdigo ASCII 246 = ( Signo de divisin )
cdigo ASCII 247 = ( Cedilla , virgulilla baja )
cdigo ASCII 248 = ( Signo de grado, anillo )
cdigo ASCII 249 = ( Diresis )
cdigo ASCII 250 = ( Punto centrado, punto medio, coma georgiana )
cdigo ASCII 251 = ( Superndice uno )
cdigo ASCII 252 = ( Superndice tres , potencia tres , al cubo )
cdigo ASCII 253 = ( Superndice dos , al cuadrado )
cdigo ASCII 254 = ( Cuadrado negro, carcter grfico )
cdigo ASCII 255 = nbsp ( Espacio sin separacin - non breaking space )

(9)
http://www.elcodigoascii.com.ar/

CURSO: CRIPTOGRAFIA I pg. 29


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

APLICACIN DEL MTODO POLYBIOS

ASCII
(alt + 244) (alt + 225) (alt + 207) (alt + 206) (alt + 240)

(alt + 243) A B C D E

(alt + 245) F G H IJ K

(alt + 231) L M N O P

(alt + 208) Q R S T U

(alt + 229) V W X Y Z
Tabla N15
Elaboracin propia

Ejemplo N1.4
La palabra CRIPTOGRAFA


Ejemplo N2.4
- El nombre UNIVERSIDAD NACIONAL JOSE FAUSTINO SNCHEZ CARRIN

CURSO: CRIPTOGRAFIA I pg. 30


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

XI. MANUAL DEL PROGRAMA EN JAVA


1) Al ejecutar la aplicacin le aparecer la siguiente ventana y solo haciendo un

movimiento con el mouse sobre esta ventana podr ir a la siguiente.

2) Luego le aparecer esta ventana, le explicaremos cada funcionalidad


detalladamente:

CURSO: CRIPTOGRAFIA I pg. 31


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

3) Si deseas resetear las claves a su estado original o las ha borrado todas y las
quiere recuperar, tiene a su disposicin la opcin Reset (icono verde ).

4) Luego le aparecer el siguiente mensaje, lo que hace Reset es eliminar todas las
claves y aadir las claves por defecto.

5) Si hace click en No o en Cancelar, no se realizar ningn cambio. Si hace click en


la primera opcin (opcin S), resetear las claves y mostrar el siguiente mensaje:
6) Luego le da clic en aceptar y le mostrara en la siguiente ventana.

PARA CIFRAR LAS PALABRAS SE REALIZAN LOS SIGUIENTES

CURSO: CRIPTOGRAFIA I pg. 32


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

PASOS:

- Primero, debes elegir de entre las claves disponibles la que deseas


utilizar:

- El siguiente paso es ingresar el texto que deseas cifrar (ingresarlo en la


casilla al lado del smbolo de corazn color amarillo):

CURSO: CRIPTOGRAFIA I pg. 33


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

- Adems, tenemos disponible la herramienta Separador, sirve para


separar en bloques el texto cifrado utilizando el separador indicado en
la casilla; Cada bloque es equivalente a cada letra del texto en claro.

- Si quieres ver la tabla de Polybios de la clave que has seleccionado,


puedes hacer clic en Mostrar Tabla.

CURSO: CRIPTOGRAFIA I pg. 34


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

- Luego al hacer clic en Mostrar Tabla, te saldr el siguiente mensaje.

- Si seleccionas la primera opcin, te aparecer una nueva ventana con la


tabla de Polybios de la clave seleccionada:

El nmero 16 indica la longitud del nombre de la tabla de


Polybios mostrada.

En Null Clave debes indicar el texto que se mostrar en caso la


letra a cifrar no tenga una equivalencia en la tabla de Polybios de
la clave seleccionada.

En Null Matriz debes indicar el texto que se mostrar en caso el


bloque a descifrar no tenga una equivalencia vlida en la tabla de
Polybios de la clave seleccionada.

CURSO: CRIPTOGRAFIA I pg. 35


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

El botn Nuevo an no tiene funcionalidades disponibles.

El botn Exportar sirve para exportar la clave de la tabla


mostrada como archivo con extensin .cskey, se exportar la
clave con los ltimos cambios guardados.

El botn Aplicar Cambios se utiliza para guardar los cambios


que has hecho en la tabla de Polybios mostrada, esta opcin slo
est disponible al abrir esta ventana desde la opcin Administrar
Claves (icono ).

El botn Reset se utiliza para descartar los cambios que has


hecho sobre la tabla de Polybios de la clave seleccionada.

- Si seleccionas la Segunda opcin, Abrir en esta pestaa, la tabla de


Polybios de la clave seleccionada se abrir en la misma pestaa.
El botn cerrar se utiliza para cerrar nicamente la tabla de Polybios de
la clave seleccionada.

- Si haces click en el botn Limpiar se limpiarn las casillas en las que


se ingresa el texto en claro y en la que se muestra el Resultado.

CURSO: CRIPTOGRAFIA I pg. 36


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

PARA DESCIFRAR LAS PALABRAS SE REALIZAN LOS


SIGUIENTES PASOS:
- Para esto, primero seleccionamos la clave que vamos a utilizar.

- Luego, hacemos click en el botn DESCIFRAR.

- Luego, escribiremos el criptograma que deseamos descifrar.

CURSO: CRIPTOGRAFIA I pg. 37


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

- Finalmente, hacemos click en el icono de la llave .

Nota: Al hacer click en CIFRAR o DESCIFRAR, se copia al portapapeles


el texto que se encuentre en la casilla de Resultado.

CURSO: CRIPTOGRAFIA I pg. 38


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

PARA GUARDAR REGISTRO DE TUS CIFRADOS O DESCIFRADOS:

- Para guardar el texto en claro y resultado en favoritos, debes hacer click en Aadir
a favoritos (icono ).

- Luego de hacer clic en el Aadir a favoritos, te saldr el siguiente mensaje; debes


hacer click en Aceptar.

- Luego, debes hacer click en Ver Favoritos para ver la lista de favoritos.

CURSO: CRIPTOGRAFIA I pg. 39


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

- El botn Abrir reemplaza el texto en la casilla de texto en claro, y el Criptograma

en la casilla de Resultado.

- El botn Eliminar elimina el registro seleccionado.

- El botn Limpiar Lista elimina todos los registros de favoritos.

LAS FUNCIONALIDADES DE LOS BOTONES EN LA INTERFAZ


PRINCIPAL
Tenemos algunas opciones ms en la interfaz principal:

Cada uno de los iconos representan las siguientes opciones:


- Administrar Claves.

- Importar una clave.

- Exportar la clave seleccionada.

- Exportar todas las claves.

CURSO: CRIPTOGRAFIA I pg. 40


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

- Administrar Claves:

- El botn Modificar Clave te llevar a una ventana que te ayudar a modificar la


tabla de la clave seleccionada.
- El botn Eliminar eliminar la clave seleccionada.
- El botn Limpiar Lista eliminar todas las claves.
- El botn Actualizar Lista actualizar la lista de claves mostradas.

- La opcin RealTime Simulation sirve para ver en tiempo real el nombre que se le
pone a la tabla de Polybios.
- La opcin Editable define si esta tabla, al guardarla, permitir o no ediciones
posteriores.

CURSO: CRIPTOGRAFIA I pg. 41


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

XII. ANEXOS
CODIGO EN JAVA DE LA CLASE CLAVE
package Clases;
public class Clave {

private String nombre = "Polybios Estndar";


private char[] fila = new char[]{'A', 'B', 'C', 'D', 'E'}, columna =
new char[]{'A', 'B', 'C', 'D', 'E'};
private char[][] matriz = new char[][]{{'A', 'B', 'C', 'D', 'E'},
{'F', 'G', 'H', 'I', 'J'}, {'K', 'M', 'N', 'O', 'P'}, {'Q', 'R', 'S',
'T', 'U'}, {'V', 'W', 'X', 'Y', 'Z'}};

public Clave() {
}
public Clave(char[] fila, char[] columna, String nombre) {
if (fila.length == this.fila.length && columna.length ==
this.columna.length) {
this.fila = fila;
this.columna = columna;
this.nombre = nombre;
this.matriz = matriz = new char[][]{{'A', 'B', 'C', 'D',
'E'}, {'F', 'G', 'H', 'I', 'J'}, {'K', 'M', 'N', 'O', 'P'}, {'Q', 'R',
'S', 'T', 'U'}, {'V', 'W', 'X', 'Y', 'Z'}};
}
}
public Clave(char[] fila, char[] columna, char[][] matriz, String
nombre) {
if (fila.length == matriz.length && columna.length ==
matriz[0].length) {
this.fila = fila;
this.columna = columna;
this.matriz = matriz;
this.nombre = nombre;
System.out.println("matriz creada");
} else {
System.out.println("matriz no creada");
}
}

public String getNombre() {


return this.nombre;
}

public char getChar(char k1, char k2, char _nul) {


for (int i = 0; i < fila.length; i++) {
for (int j = 0; j < columna.length; j++) {
if (Character.compare(fila[i], k1) == 0 &&
Character.compare(columna[j], k2) == 0) {
return matriz[i][j];
}
}
}
return _nul;
}

CURSO: CRIPTOGRAFIA I pg. 42


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public char getChar(char k1, char k2) {


for (int i = 0; i < fila.length; i++) {
for (int j = 0; j < columna.length; j++) {
if (Character.compare(fila[i], k1) == 0 &&
Character.compare(columna[j], k2) == 0) {
return matriz[i][j];
}
}
}
return '@';
}

public String getClave(char letra, String _nul) {


for (int i = 0; i < fila.length; i++) {
for (int j = 0; j < columna.length; j++) {
if (Character.compare(letra, matriz[i][j]) == 0) {
return "" + fila[i] + columna[j];
}
}
}
return _nul;
}

public String getClave(char letra) {


for (int i = 0; i < fila.length; i++) {
for (int j = 0; j < columna.length; j++) {
if (Character.compare(letra, matriz[i][j]) == 0) {
return "" + fila[i] + columna[j];
}
}
}
return "??";
}

@Override
public String toString() {
return this.nombre;
}
public static String cifrar(String m, Clave k, String sep) {
String c = "";
for (int i = 0; i < m.length(); i++) {
c = c + k.getClave(m.charAt(i)) + sep;
}
return c;
}

public static String cifrar(String m, Clave k) {


return cifrar(m, k, " ");
}

public static String descifrar(String m, Clave k, String sep) {


String c = "";
for (int i = 0; i < m.length(); i = i + 2) {
c = c + k.getChar(m.charAt(i), m.charAt(i + 1)) + sep;
}
return c;
}
public static String descifrar(String m, Clave k) {
return descifrar(m, k, " ");
}

CURSO: CRIPTOGRAFIA I pg. 43


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CODIGO CLASE CLAVESTRING


package Clases;
import java.io.Serializable;
import javax.swing.table.DefaultTableModel;

public class ClaveString implements Serializable {

private String nombre = "Polybios Estndar";


private String[] fila = new String[]{"A0", "B0", "C0", "D0", "E0"},
columna = new String[]{"A1", "B1", "C1", "D1", "E1"};
private String[][] matriz = new String[][]{{"A", "B", "C", "D", "E"},
{"F", "G", "H", "I", "J"}, {"K", "M", "N", "O", "P"}, {"Q", "R", "S",
"T", "U"}, {"V", "W", "X", "Y", "Z"}};
private String _nullClave = "??";
private String _nullMatriz = "?";
private boolean modificable = true;
public ClaveString() {
System.out.println("clave creada");
}
public ClaveString(String[] fila, String[] columna, String nombre) {
if (esClaveValida(fila, columna, matriz, _nullClave,
_nullMatriz)) {
this.fila = fila;
this.columna = columna;
this.nombre = nombre;
System.out.println("clave creada");
} else {
System.out.println("clave no creada");
}
}

public boolean isModificable() {


return modificable;
}

public void setModificable(boolean modificable) {


this.modificable = modificable;
}
public ClaveString(String[] fila, String[] columna, String[][]
matriz, String nombre, String _nullClave, String _nullMatriz) {
if (esClaveValida(fila, columna, matriz, _nullClave,
_nullMatriz)) {
this.fila = fila;
this.columna = columna;
this.matriz = matriz;
this.nombre = nombre;
this._nullClave = _nullClave;
this._nullMatriz = _nullMatriz;
System.out.println("clave creada");
} else {
System.out.println("clave no creada");
}
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}

CURSO: CRIPTOGRAFIA I pg. 44


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

@Override
public String toString() {
return this.nombre;
}
public int getLength() {
return fila[0].length();
}
public String getChar(String k1, String k2, String _nul) {
for (int i = 0; i < fila.length; i++) {
for (int j = 0; j < columna.length; j++) {
if (fila[i].equals(k1) && columna[j].equals(k2)) {
return matriz[i][j];
}
}
}
return _nul;
}

public String getChar(String k1, String k2) {


return getChar(k1, k2, _nullMatriz);
}

public String getClave(String letra, String _nul) {


for (int i = 0; i < fila.length; i++) {
for (int j = 0; j < columna.length; j++) {
if (letra.equals(matriz[i][j])) {
return "" + fila[i] + columna[j];
}
}
}
return _nul;
}

public String getClave(String letra) {


return getClave(letra, _nullClave + _nullClave);
}
public static String cifrar(String m, ClaveString k, String sep) {
String c = "";
for (int i = 0; i < m.length(); i++) {
c = c + k.getClave(m.substring(i, i + 1)) + (i < m.length() - 1 ? sep :
"");
}
return c;
}

public static String cifrar(String m, ClaveString k, String sep,


String sep_de_Descifrado) {
return cifrar(m.replaceAll(sep_de_Descifrado, ""), k, sep);
}
public static String cifrar(String m, ClaveString k) {
return cifrar(m, k, "");
}
public static String descifrar(String m, ClaveString k, String sep) {
String c = "";
for (int i = 0; i < m.length(); i = i + k.getLength() * 2) {
c = c + k.getChar(m.substring(i, i + k.getLength()),
m.substring(i + k.getLength(), i + k.getLength() * 2)) + (i < m.length()
- k.getLength() * 2 ? sep : "");
}
return c;
}

CURSO: CRIPTOGRAFIA I pg. 45


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public static String descifrar(String m, ClaveString k, String sep,


String sep_de_Cifrado) {
return descifrar(m.replaceAll(sep_de_Cifrado, ""), k, sep);
}
public static String descifrar(String m, ClaveString k) {
return descifrar(m, k, "");
}
public static boolean verificarVector(String[] vector, String nombre,
String _null) {
System.out.println(" - verificando " + nombre + "...");
boolean _valido = true;
for (int i = 0; i < vector.length; i++) {
for (int j = i + 1; j < vector.length; j++) {
String ci, cj;
ci = vector[i];
cj = vector[j];
if (ci.equals(cj) || ci.length() != cj.length()) {
_valido = false;
System.out.println(" No es vlido por:\n o " +
ci + " y " + cj + " son iguales?\n o " + ci + " y " + cj + " son de
largo distinto?");
break;
}
if (ci.equals(_null) || cj.equals(_null) || ci.length()
!= _null.length()) {
_valido = false;
System.out.println(" el null " + _null + " no
tiene la misma longitud o coindide con alguno de estos: " + ci + " - " +
cj);
break;
}
}
if (!_valido) {
break;
}
}
return _valido;
}
public static boolean verificarVector(String[] vector, String _null) {
return verificarVector(vector, "vector", _null);
}
public static boolean esClaveValida(String[] fila, String[] columna,
String[][] matriz, String _nullClave, String _nullMatriz) {
boolean _valido;
_valido = fila[0].length() == columna[0].length() &&
verificarVector(fila, "vector fila", _nullClave) &&
verificarVector(columna, "vector columna", _nullClave);
System.out.print(_valido ? "_vectores aceptados, " : "_vectores
no aceptados, ");
if (_valido && matriz.length == fila.length && matriz[0].length
== columna.length) {
System.out.println("comprobando matriz...");
String[] m = new String[matriz.length * matriz[0].length];
for (int i = 0; i < matriz.length * matriz[0].length; i = i +
matriz[0].length) {
for (int j = 0; j < matriz[0].length; j++) {
m[i + j] = matriz[i / matriz[0].length][j];
}
}
_valido = _valido && verificarVector(m, "matriz", _nullMatriz);
} else {
_valido = false;

CURSO: CRIPTOGRAFIA I pg. 46


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

System.out.println(_valido ? "\n_la dimension de la matriz no


encaja con las de las claves fila y columna" : "");
}
System.out.println("Clave " + (_valido ? "aceptada" :
"rechazada"));
return _valido;
}

public DefaultTableModel getTableModel(boolean editable) {


String[] columnas = new String[matriz[0].length + 1];
for (int i = 0; i < columnas.length; i++) {
//columnas[i] = "columna "+(i+1);
columnas[i] = " ";
}
String[][] datos = new String[fila.length + 1][columna.length +
1];
for (int i = 0; i < fila.length + 1; i++) {
for (int j = 0; j < columna.length + 1; j++) {
if (i == j && i == 0) {
datos[i][j] = "";
} else if (i == 0) {
datos[i][j] = columna[j - 1];
} else if (j == 0) {
datos[i][j] = fila[i - 1];
} else {
datos[i][j] = matriz[i - 1][j - 1];
}
}
}
DefaultTableModel modelo;
if (editable) {
modelo = new DefaultTableModel(
datos,
columnas
);
} else {
modelo = new DefaultTableModel(
datos,
columnas
) {
public boolean isCellEditable(int rowIndex, int
columnIndex) {
return false;
}
};
}

return modelo;
}
}

CURSO: CRIPTOGRAFIA I pg. 47


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CODIGO CLASE REGISTROTO


package Clases;

import java.io.Serializable;
public class registroTO implements Serializable{
String texto,criptograma,clave,fecha;

public registroTO(String texto, String criptograma, String clave,


String fecha) {
this.texto = texto;
this.criptograma = criptograma;
this.clave = clave;
this.fecha = fecha;
}

public String toString(){


return texto+" "+criptograma+" "+clave+" "+fecha;
}

public String getTexto() {


return texto;
}

public String getCriptograma() {


return criptograma;
}

public String getClave() {


return clave;
}

public String getFecha() {


return fecha;
}

CURSO: CRIPTOGRAFIA I pg. 48


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CDIGO DE LA VENTA EN JAVA ACERCA


package GUI;
public class AcercaDe extends javax.swing.JFrame {

/**
* Creates new form AcercaDe
*/
public AcercaDe() {
initComponents();
setLocationRelativeTo(null);
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(AcercaDe.class.getName()).log(java.uti
l.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(AcercaDe.class.getName()).log(java.uti
l.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(AcercaDe.class.getName()).log(java.uti
l.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(AcercaDe.class.getName()).log(java.uti
l.logging.Level.SEVERE, null, ex);
}

@SuppressWarnings("unchecked")
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jPanel3 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setType(java.awt.Window.Type.UTILITY);

CURSO: CRIPTOGRAFIA I pg. 49


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

jPanel1.setBackground(new java.awt.Color(0, 153, 255));


jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
jPanel1MouseEntered(evt);
}
});

jPanel3.setBackground(new java.awt.Color(255, 255, 255));


jPanel3.setMaximumSize(new java.awt.Dimension(600, 177));
jPanel3.setMinimumSize(new java.awt.Dimension(600, 177));

jLabel1.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N


jLabel1.setForeground(new java.awt.Color(153, 153, 153));

jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("Informacin acerca de los desarrolladores:");

jLabel2.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N


jLabel2.setForeground(new java.awt.Color(153, 153, 153));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel2.setText("Nombres:");

jLabel3.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N


jLabel3.setForeground(new java.awt.Color(153, 153, 153));
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel3.setText("LUIS MENDOZA, Samuel");

jLabel4.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N


jLabel4.setForeground(new java.awt.Color(153, 153, 153));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel4.setText("Universidad:");

jLabel5.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N


jLabel5.setForeground(new java.awt.Color(153, 153, 153));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel5.setText("UNIVERSIDAD NACIONAL JOS FAUSTINO SNCHEZ
CARRIN");

jLabel6.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N


jLabel6.setForeground(new java.awt.Color(153, 153, 153));
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel6.setText("Ingeniera Informtica");

jLabel7.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N


jLabel7.setForeground(new java.awt.Color(153, 153, 153));
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel7.setText("E.A.P:");

jLabel8.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N


jLabel8.setForeground(new java.awt.Color(153, 153, 153));
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel8.setText("GUERRERO SNCHEZ, Weiner Brayan");

jLabel9.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N


jLabel9.setForeground(new java.awt.Color(153, 153, 153));
jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel9.setText("LEN CRISPN, Mao Jovaldo");

jLabel10.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N


jLabel10.setForeground(new java.awt.Color(153, 153, 153));
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel10.setText("LPEZ CASTRO, Angello Jhones");

CURSO: CRIPTOGRAFIA I pg. 50


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

javax.swing.GroupLayout jPanel3Layout = new


javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jLabel2,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel3,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel10,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(174, 174, 174))
.addComponent(jLabel9,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel8,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(95, 95, 95))

.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel4,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(412, 412, 412)))
.addGap(184, 184, 184))
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel6,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
.addComponent(jLabel5,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel7,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
);
jPanel3Layout.setVerticalGroup(

CURSO: CRIPTOGRAFIA I pg. 51


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel1,
javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel10)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel9)
.addGap(4, 4, 4)
.addComponent(jLabel8)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel4)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel5)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel7)
.addGap(1, 1, 1)
.addComponent(jLabel6)
.addContainerGap(23, Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel3,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(3, 3, 3))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

CURSO: CRIPTOGRAFIA I pg. 52


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
);

pack();
}

private void jPanel1MouseEntered(java.awt.event.MouseEvent evt) {

}
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel3;
}

CURSO: CRIPTOGRAFIA I pg. 53


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CDIGO EN JAVA DE LA CLASE ADMINISTRAR CLAVES


package GUI;

import Clases.ClaveString;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;

public class AdministrarClaves extends javax.swing.JFrame {

GUI gui;
DefaultTableModel modelo;

AdministrarClaves(GUI gui) {
initComponents();
modelo = (DefaultTableModel) jtblTabla.getModel();
setLocationRelativeTo(null);
setVisible(true);
this.gui = gui;
llenarTabla();
}
@SuppressWarnings("unchecked")
private void initComponents() {

jPanel2 = new javax.swing.JPanel();


jScrollPane2 = new javax.swing.JScrollPane();
jtblTabla = new javax.swing.JTable();
jbtnEliminar = new javax.swing.JButton();
jbtnAbrir = new javax.swing.JButton();
jbtnLimpiar = new javax.swing.JButton();
jlblNombreClaveMatriz = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Administrador de Claves");
setIconImage(getIconImage());
setMinimumSize(new java.awt.Dimension(0, 392));

jPanel2.setBackground(new java.awt.Color(255, 255, 255));

jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jtblTabla.setFont(new java.awt.Font("Corbel", 1, 14)); // NOI18N


jtblTabla.setForeground(new java.awt.Color(51, 51, 51));
jtblTabla.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{ new Long(1), "Polybios Estndar", null}
},
new String [] {
"ID", "Nombre", "Editable"
}
) {
Class[] types = new Class [] {
java.lang.Long.class, java.lang.String.class,
java.lang.Boolean.class
};
boolean[] canEdit = new boolean [] {
false, false, false
};

CURSO: CRIPTOGRAFIA I pg. 54


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public Class getColumnClass(int columnIndex) {


return types [columnIndex];
}

public boolean isCellEditable(int rowIndex, int columnIndex)


{
return canEdit [columnIndex];
}
});
jtblTabla.setGridColor(new java.awt.Color(153, 153, 153));
jtblTabla.setSelectionBackground(new java.awt.Color(0, 153,
255));

jtblTabla.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTIO
N);
jtblTabla.setShowHorizontalLines(false);
jtblTabla.setShowVerticalLines(false);
jtblTabla.getTableHeader().setReorderingAllowed(false);
jScrollPane2.setViewportView(jtblTabla);

jtblTabla.getColumnModel().getSelectionModel().setSelectionMode(javax.swi
ng.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

jbtnEliminar.setText("Eliminar");
jbtnEliminar.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnEliminarActionPerformed(evt);
}
});

jbtnAbrir.setText("Modificar Clave");
jbtnAbrir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnAbrirActionPerformed(evt);
}
});

jbtnLimpiar.setText("Limpiar Lista");
jbtnLimpiar.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnLimpiarActionPerformed(evt);
}
});

jlblNombreClaveMatriz.setFont(new java.awt.Font("Arial", 1, 24));


// NOI18N
jlblNombreClaveMatriz.setForeground(new java.awt.Color(0, 153,
255));

jlblNombreClaveMatriz.setHorizontalAlignment(javax.swing.SwingConstants.C
ENTER);
jlblNombreClaveMatriz.setText("Administrador de Claves");

javax.swing.GroupLayout jPanel2Layout = new


javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)

CURSO: CRIPTOGRAFIA I pg. 55


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

.addComponent(jlblNombreClaveMatriz,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 711, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jbtnAbrir,
javax.swing.GroupLayout.PREFERRED_SIZE, 111,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnEliminar,
javax.swing.GroupLayout.PREFERRED_SIZE, 116,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnLimpiar,
javax.swing.GroupLayout.PREFERRED_SIZE, 108,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addGap(4, 4, 4)
.addComponent(jlblNombreClaveMatriz)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 268,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(jbtnEliminar)
.addComponent(jbtnAbrir)
.addComponent(jbtnLimpiar))
.addGap(18, 18, 18))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

CURSO: CRIPTOGRAFIA I pg. 56


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

pack();
}// </editor-fold>

private void jbtnAbrirActionPerformed(java.awt.event.ActionEvent evt)


{
if (jtblTabla.getSelectedRow() < 0) {
gui.mostrarMensajeError("Selecciona una de las claves.");
} else if (modelo.getRowCount() == 0) {
gui.mostrarMensajeFavoritos("No tienes claves, aade una!");
} else {
gui.actualizarPublicClave();
TablaNuevaPestania x = new TablaNuevaPestania(this,
gui.claves.get(jtblTabla.getSelectedRow()), true);
}
}

private void jbtnLimpiarActionPerformed(java.awt.event.ActionEvent


evt) {
if (modelo.getRowCount() > 0) {
gui.limpiarClaves(this);
} else{
gui.mostrarMensajeFavoritos("No tienes claves, aade una!");
}

private void jbtnEliminarActionPerformed(java.awt.event.ActionEvent


evt) {

if (jtblTabla.getSelectedRow() < 0) {
gui.mostrarMensajeError("Selecciona una clave para
eliminar.");
} else if (modelo.getRowCount() == 0) {
gui.mostrarMensajeFavoritos("No tienes claves, aade una!");
} else {
gui.eliminarClave(jtblTabla.getSelectedRow(), this);
}

}
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JButton jbtnAbrir;
private javax.swing.JButton jbtnEliminar;
private javax.swing.JButton jbtnLimpiar;
private javax.swing.JLabel jlblNombreClaveMatriz;
private javax.swing.JTable jtblTabla;

CURSO: CRIPTOGRAFIA I pg. 57


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public void llenarTabla() {


limpiarTabla();
ArrayList<ClaveString> claves = gui.claves;

for (int i = 0; i < claves.size(); i++) {


ClaveString x = claves.get(i);
modelo.addRow(new Object[]{i + 1, x.getNombre(),
x.isModificable()});
}

private void limpiarTabla() {


while (modelo.getRowCount() > 0) {
modelo.removeRow(0);
}
}

@Override
public Image getIconImage() {
Image retValue = Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("imagenes/icons8-
Configuracin de datos-25.png"));
return retValue;
}

CURSO: CRIPTOGRAFIA I pg. 58


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CDIGO EN JAVA DE LA CLASE FAVORITOS


package GUI;

import Clases.registroTO;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
public class Favoritos extends javax.swing.JFrame {
private GUI gui;
DefaultTableModel modelo;

Favoritos(GUI gui) {
initComponents();
modelo = (DefaultTableModel) jtblTabla.getModel();
setLocationRelativeTo(null);
setVisible(true);
this.gui = gui;
llenarTabla();
}
@SuppressWarnings("unchecked")
private void initComponents() {

jPanel2 = new javax.swing.JPanel();


jScrollPane2 = new javax.swing.JScrollPane();
jtblTabla = new javax.swing.JTable();
jbtnEliminar = new javax.swing.JButton();
jbtnAbrir = new javax.swing.JButton();
jbtnLimpiar = new javax.swing.JButton();
jlblNombreClaveMatriz = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Favoritos");
setIconImage(getIconImage());
setMaximumSize(new java.awt.Dimension(2147483647, 392));
setMinimumSize(new java.awt.Dimension(0, 392));

jPanel2.setBackground(new java.awt.Color(255, 255, 255));

jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("lista de
favoritos"));

jtblTabla.setFont(new java.awt.Font("Corbel", 1, 14)); // NOI18N


jtblTabla.setForeground(new java.awt.Color(51, 51, 51));
jtblTabla.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{ new Long(1), "as", "sad", "asd", "asd"}
},
new String [] {
"ID", "TEXTO", "CRIPTOGRAMA", "CLAVE", "FECHA"
}
) {
Class[] types = new Class [] {
java.lang.Long.class, java.lang.String.class,
java.lang.String.class, java.lang.String.class, java.lang.String.class
};

public Class getColumnClass(int columnIndex) {


return types [columnIndex];

CURSO: CRIPTOGRAFIA I pg. 59


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

}
});
jtblTabla.setGridColor(new java.awt.Color(153, 153, 153));
jtblTabla.setSelectionBackground(new java.awt.Color(255, 204,
51));

jtblTabla.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTIO
N);
jtblTabla.setShowHorizontalLines(false);
jtblTabla.setShowVerticalLines(false);
jtblTabla.getTableHeader().setReorderingAllowed(false);
jScrollPane2.setViewportView(jtblTabla);

jtblTabla.getColumnModel().getSelectionModel().setSelectionMode(javax.swi
ng.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

jbtnEliminar.setText("Eliminar");
jbtnEliminar.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnEliminarActionPerformed(evt);
}
});

jbtnAbrir.setText("Abrir");
jbtnAbrir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnAbrirActionPerformed(evt);
}
});

jbtnLimpiar.setText("Limpiar Lista");
jbtnLimpiar.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnLimpiarActionPerformed(evt);
}
});

jlblNombreClaveMatriz.setFont(new java.awt.Font("Arial", 1, 24));


// NOI18N
jlblNombreClaveMatriz.setForeground(new java.awt.Color(255, 204,
102));

jlblNombreClaveMatriz.setHorizontalAlignment(javax.swing.SwingConstants.C
ENTER);
jlblNombreClaveMatriz.setText("FAVORITOS");

javax.swing.GroupLayout jPanel2Layout = new


javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jlblNombreClaveMatriz,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()

CURSO: CRIPTOGRAFIA I pg. 60


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 703, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jbtnAbrir,
javax.swing.GroupLayout.PREFERRED_SIZE, 111,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnEliminar,
javax.swing.GroupLayout.PREFERRED_SIZE, 116,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnLimpiar,
javax.swing.GroupLayout.PREFERRED_SIZE, 108,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addGap(4, 4, 4)
.addComponent(jlblNombreClaveMatriz)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 268,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(jbtnEliminar)
.addComponent(jbtnAbrir)
.addComponent(jbtnLimpiar))
.addGap(18, 18, 18))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

CURSO: CRIPTOGRAFIA I pg. 61


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

);

pack();
}// </editor-fold>

private void jbtnAbrirActionPerformed(java.awt.event.ActionEvent evt)


{
try {
gui.cargarRegistro(
(String)
modelo.getValueAt(jtblTabla.getSelectedRow(), 1),
(String)
modelo.getValueAt(jtblTabla.getSelectedRow(), 2),
(String)
modelo.getValueAt(jtblTabla.getSelectedRow(), 3));
dispose();
} catch (Exception e) {
if (modelo.getRowCount() != 0) {
gui.mostrarMensajeError("Selecciona un registro para
cargar");
} else {
gui.mostrarMensajeFavoritos("No tienes favoritos, aade
uno!");
}
}
}

private void jbtnLimpiarActionPerformed(java.awt.event.ActionEvent


evt) {
if (modelo.getRowCount() > 0) {
gui.limpiarFavoritos(this);
} else{
gui.mostrarMensajeFavoritos("No tienes favoritos, aade
uno!");
}

private void jbtnEliminarActionPerformed(java.awt.event.ActionEvent


evt) {
if (modelo.getRowCount() > 0 && jtblTabla.getSelectedRow() >= 0)
{
gui.eliminarFavorito(jtblTabla.getSelectedRow(), this);
} else if (jtblTabla.getSelectedRow() < 0) {
gui.mostrarMensajeError("Selecciona un registro para eliminar
de favoritos.");
} else {
gui.mostrarMensajeFavoritos("No tienes favoritos, aade
uno!");
}

}
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JButton jbtnAbrir;
private javax.swing.JButton jbtnEliminar;
private javax.swing.JButton jbtnLimpiar;
private javax.swing.JLabel jlblNombreClaveMatriz;
private javax.swing.JTable jtblTabla;

CURSO: CRIPTOGRAFIA I pg. 62


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public void llenarTabla() {


limpiarTabla();
ArrayList<registroTO> reg = gui._regfavoritos;

for (int i = 0; i < reg.size(); i++) {


registroTO x = reg.get(i);
modelo.addRow(new Object[]{i + 1, x.getTexto(),
x.getCriptograma(), x.getClave(), x.getFecha()});
}

private void limpiarTabla() {


while (modelo.getRowCount() > 0) {
modelo.removeRow(0);
}
}

@Override
public Image getIconImage() {
Image retValue = Toolkit.getDefaultToolkit().

getImage(ClassLoader.getSystemResource("imagenes/me_gusta/icons8-Me gusta
Filled-25.png"));
return retValue;
}

CURSO: CRIPTOGRAFIA I pg. 63


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CDIGO EN JAVA DE LA CLASE GUI


package GUI;
import Clases.ClaveString;
import Clases.registroTO;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;

/**
*
* @author Jhordy Principe
*/
public class GUI extends javax.swing.JFrame {

String nombrePrograma = "Cifrador Polybios";


String sep = File.separator;
String dir_regFavoritos = System.getProperty("user.home") + sep +
"Documents" + sep + nombrePrograma + sep + "bin" + sep + "data" + sep +
"regfav_dataloader.dl";
String dir_claves = System.getProperty("user.home") + sep +
"Documents" + sep + nombrePrograma + sep + "bin" + sep + "data" + sep +
"cskeys_dataloader.dl";

public static ClaveString _clave = new ClaveString();

DefaultComboBoxModel modeloCBox;
DefaultTableModel modeloTabla;
ArrayList<ClaveString> claves = new ArrayList<ClaveString>();
boolean cifrar;
boolean _tablaAbierta, _nuevo;
ArrayList<registroTO> _regfavoritos;

File ultimaRutaAbierta = (new JFileChooser().getCurrentDirectory());

public GUI() {
initComponents();

crearCarpetaFavoritos();

_tablaAbierta = false;
_nuevo = false;
abrirTabla(_tablaAbierta);

CURSO: CRIPTOGRAFIA I pg. 64


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

setLocationRelativeTo(null);
modeloCBox = (DefaultComboBoxModel) jcbxClave.getModel();
modeloTabla = (DefaultTableModel) jtblTabla.getModel();
_regfavoritos = cargarListaRegistros();
cargarClaves();
cifrar = true;
mostrarPrograma();
}
*/
@SuppressWarnings("unchecked")
private void initComponents() {

jPanel4 = new javax.swing.JPanel();


jPanel3 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jcbxClave = new javax.swing.JComboBox<>();
jLabel2 = new javax.swing.JLabel();
jtxtClaro = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jtxtCriptograma = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
jtxtSeparador = new javax.swing.JTextField();
jtxtCifrarDecifrar = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jbtnVerLista = new javax.swing.JButton();
jlblFavoritos = new javax.swing.JLabel();
jlblExportarTodasCskey = new javax.swing.JLabel();
jlblCargarCskey = new javax.swing.JLabel();
jlblExportarUnaCskey = new javax.swing.JLabel();
jlblCifrar = new javax.swing.JLabel();
jlblAdministrarClaves = new javax.swing.JLabel();
jlblResetClaves = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
jtblTabla = new javax.swing.JTable();
jbtnmExportar = new javax.swing.JButton();
jbtnmNuevo = new javax.swing.JButton();
jbtnmModificar = new javax.swing.JButton();
jbtnmCerrar = new javax.swing.JButton();
jrbtnModificable = new javax.swing.JRadioButton();
jlblNombreClaveMatriz = new javax.swing.JLabel();

javax.swing.GroupLayout jPanel4Layout = new


javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel4Layout.setVerticalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGap(0, 100, Short.MAX_VALUE)
);

CURSO: CRIPTOGRAFIA I pg. 65


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(255, 255, 255));
setIconImage(getIconImage());
setResizable(false);

jPanel3.setBackground(new java.awt.Color(0, 102, 255));

jPanel1.setBackground(new java.awt.Color(255, 255, 255));

jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Cifrador
Polybios"));

jLabel1.setText("Seleccionar Clave:");

jcbxClave.setBorder(null);
jcbxClave.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jcbxClaveItemStateChanged(evt);
}
});
jcbxClave.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jcbxClaveMouseClicked(evt);
}
});
jcbxClave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jcbxClaveActionPerformed(evt);
}
});
jcbxClave.addPropertyChangeListener(new
java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent
evt) {
jcbxClavePropertyChange(evt);
}
});

jLabel2.setText("Ingresar Texto en Claro:");

jtxtClaro.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jtxtClaroActionPerformed(evt);
}
});
jtxtClaro.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jtxtClaroKeyPressed(evt);
}
public void keyReleased(java.awt.event.KeyEvent evt) {
jtxtClaroKeyReleased(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
jtxtClaroKeyTyped(evt);
}
});

jtxtCriptograma.setEditable(false);
jtxtCriptograma.setColumns(20);
jtxtCriptograma.setRows(5);
jScrollPane1.setViewportView(jtxtCriptograma);

CURSO: CRIPTOGRAFIA I pg. 66


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

jButton1.setText("Copiar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setText("Limpiar");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

jButton3.setText("Mostrar Tabla");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});

jLabel3.setText("Separador:");

jtxtSeparador.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jtxtSeparadorKeyPressed(evt);
}
public void keyReleased(java.awt.event.KeyEvent evt) {
jtxtSeparadorKeyReleased(evt);
}
});

jtxtCifrarDecifrar.setText("DESCIFRAR");
jtxtCifrarDecifrar.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jtxtCifrarDecifrarActionPerformed(evt);
}
});
jtxtCifrarDecifrar.addKeyListener(new java.awt.event.KeyAdapter()
{
public void keyPressed(java.awt.event.KeyEvent evt) {
jtxtCifrarDecifrarKeyPressed(evt);
}
});

jButton4.setText("Acerca de");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});

jbtnVerLista.setText("Ver Favoritos");
jbtnVerLista.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jbtnVerListaMouseClicked(evt);
}
});
jbtnVerLista.addActionListener(new
java.awt.event.ActionListener() {

CURSO: CRIPTOGRAFIA I pg. 67


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public void actionPerformed(java.awt.event.ActionEvent evt) {


jbtnVerListaActionPerformed(evt);
}
});
jbtnVerLista.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jbtnVerListaKeyPressed(evt);
}
});

jlblFavoritos.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jlblFavoritos.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/me_gusta/icons8-
Me gusta-25.png"))); // NOI18N
jlblFavoritos.setToolTipText("Agregar esto a mi lista");
jlblFavoritos.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(java.awt.event.MouseEvent evt) {
jlblFavoritosMouseClicked(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
jlblFavoritosMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
jlblFavoritosMouseExited(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jlblFavoritosMouseReleased(evt);
}
});

jlblExportarTodasCskey.setHorizontalAlignment(javax.swing.SwingConstants.
CENTER);
jlblExportarTodasCskey.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Guardar
todo-25.png"))); // NOI18N
jlblExportarTodasCskey.setToolTipText("Exportar todas las
clave");
jlblExportarTodasCskey.addMouseListener(new
java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jlblExportarTodasCskeyMouseClicked(evt);
}
});

jlblCargarCskey.setHorizontalAlignment(javax.swing.SwingConstants.CENTER)
;
jlblCargarCskey.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Agregar
archivo-25.png"))); // NOI18N
jlblCargarCskey.setToolTipText("Importar esta clave");
jlblCargarCskey.addMouseListener(new
java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jlblCargarCskeyMouseClicked(evt);
}
});

CURSO: CRIPTOGRAFIA I pg. 68


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

jlblExportarUnaCskey.setHorizontalAlignment(javax.swing.SwingConstants.CE
NTER);
jlblExportarUnaCskey.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Guardar-
25.png"))); // NOI18N
jlblExportarUnaCskey.setToolTipText("Exportar esta clave");
jlblExportarUnaCskey.addMouseListener(new
java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jlblExportarUnaCskeyMouseClicked(evt);
}
});
jlblExportarUnaCskey.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jlblExportarUnaCskeyKeyPressed(evt);
}
});

jlblCifrar.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jlblCifrar.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/llave/icons8-
Llave-25-2.png"))); // NOI18N
jlblCifrar.setToolTipText("aplicar cifrado o descifrado al texto
en claro.");
jlblCifrar.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jlblCifrarMouseClicked(evt);
}
});

jlblAdministrarClaves.setHorizontalAlignment(javax.swing.SwingConstants.C
ENTER);
jlblAdministrarClaves.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-
Configuracin de datos-25.png"))); // NOI18N
jlblAdministrarClaves.setToolTipText("Administrar Claves");
jlblAdministrarClaves.addMouseListener(new
java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jlblAdministrarClavesMouseClicked(evt);
}
});

jlblResetClaves.setHorizontalAlignment(javax.swing.SwingConstants.CENTER)
;
jlblResetClaves.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Cita
recurrente-25.png"))); // NOI18N
jlblResetClaves.setToolTipText("Reset Claves");
jlblResetClaves.addMouseListener(new
java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jlblResetClavesMouseClicked(evt);
}
});

CURSO: CRIPTOGRAFIA I pg. 69


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.TRAILING)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel1Layout.createSequentialGroup()
.addComponent(jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE, 123,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2,
javax.swing.GroupLayout.PREFERRED_SIZE, 123,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton3,
javax.swing.GroupLayout.PREFERRED_SIZE, 123,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton4,
javax.swing.GroupLayout.PREFERRED_SIZE, 123,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel1Layout.createSequentialGroup()
.addComponent(jbtnVerLista,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jtxtCifrarDecifrar,
javax.swing.GroupLayout.PREFERRED_SIZE, 143,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(128, 128, 128)
.addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jtxtSeparador,
javax.swing.GroupLayout.PREFERRED_SIZE, 60,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel1Layout.createSequentialGroup()

CURSO: CRIPTOGRAFIA I pg. 70


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jcbxClave,
javax.swing.GroupLayout.PREFERRED_SIZE, 263,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jlblResetClaves)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jlblAdministrarClaves)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jlblCargarCskey)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jlblExportarUnaCskey)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jlblExportarTodasCskey,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jlblFavoritos)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jtxtClaro)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jlblCifrar)))
.addGap(10, 10, 10))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel2)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jlblAdministrarClaves)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jlblExportarTodasCskey,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createSequentialGroup()

CURSO: CRIPTOGRAFIA I pg. 71


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jlblResetClaves)
.addComponent(jlblCargarCskey)
.addComponent(jlblExportarUnaCskey)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(jcbxClave,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)))
.addGap(0, 0, Short.MAX_VALUE)))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(jLabel3)
.addComponent(jtxtSeparador,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jtxtCifrarDecifrar)
.addComponent(jbtnVerLista))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.TRAILING)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING, false)
.addComponent(jlblFavoritos,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jtxtClaro))
.addComponent(jlblCifrar))
.addGap(18, 18, 18)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 217,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3)
.addComponent(jButton4))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

jPanel2.setBackground(new java.awt.Color(255, 255, 255));

CURSO: CRIPTOGRAFIA I pg. 72


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Matriz"))
;

jtblTabla.setFont(new java.awt.Font("Corbel", 1, 14)); // NOI18N


jtblTabla.setForeground(new java.awt.Color(51, 51, 60));
jtblTabla.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"", "A1", "B1", "C1", "D1"},
{"A2", "a", "b", "c", "d"},
{"B2", "e", "f", "g", "h"},
{"C2", "i", "j", "k", "l"},
{"D2", "m", "n", "", "o"}
},
new String [] {
"", "", "", "", ""
}
));
jtblTabla.setColumnSelectionAllowed(true);
jtblTabla.setGridColor(new java.awt.Color(153, 153, 153));
jtblTabla.getTableHeader().setReorderingAllowed(false);
jScrollPane2.setViewportView(jtblTabla);

jbtnmExportar.setText("Exportar");
jbtnmExportar.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnmExportarActionPerformed(evt);
}
});

jbtnmNuevo.setText("Nuevo");
jbtnmNuevo.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnmNuevoActionPerformed(evt);
}
});

jbtnmModificar.setText("Modificar");
jbtnmModificar.setEnabled(false);
jbtnmModificar.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnmModificarActionPerformed(evt);
}
});

jbtnmCerrar.setText("Cerrar");
jbtnmCerrar.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnmCerrarActionPerformed(evt);
}
});

jrbtnModificable.setBackground(new java.awt.Color(255, 255,


255));
jrbtnModificable.setText("Modificable");
jrbtnModificable.setEnabled(false);

CURSO: CRIPTOGRAFIA I pg. 73


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

jlblNombreClaveMatriz.setFont(new java.awt.Font("Arial", 1, 24));


// NOI18N
jlblNombreClaveMatriz.setForeground(new java.awt.Color(153, 153,
153));

jlblNombreClaveMatriz.setHorizontalAlignment(javax.swing.SwingConstants.C
ENTER);
jlblNombreClaveMatriz.setText("Convertir nmero decimal a
hexadecimal");

javax.swing.GroupLayout jPanel2Layout = new


javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jlblNombreClaveMatriz,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jScrollPane2)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jrbtnModificable,
javax.swing.GroupLayout.DEFAULT_SIZE, 119, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jbtnmNuevo,
javax.swing.GroupLayout.PREFERRED_SIZE, 111,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnmExportar,
javax.swing.GroupLayout.PREFERRED_SIZE, 116,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnmModificar,
javax.swing.GroupLayout.PREFERRED_SIZE, 108,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnmCerrar,
javax.swing.GroupLayout.PREFERRED_SIZE, 115,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addGap(4, 4, 4)
.addComponent(jlblNombreClaveMatriz)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

CURSO: CRIPTOGRAFIA I pg. 74


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 285,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(jbtnmExportar)
.addComponent(jbtnmNuevo)
.addComponent(jbtnmModificar)
.addComponent(jbtnmCerrar)
.addComponent(jrbtnModificable))
.addContainerGap())
);

javax.swing.GroupLayout jPanel3Layout = new


javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jPanel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jPanel2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING, false)
.addComponent(jPanel1,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(3, 3, 3))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(

CURSO: CRIPTOGRAFIA I pg. 75


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
);

pack();
}// </editor-fold>

private void jcbxClaveActionPerformed(java.awt.event.ActionEvent evt)


{
if (_tablaAbierta) {
llenarTabla();
}
if (cifrar) {
llenarTxtArea();
}
}

private void jcbxClaveMouseClicked(java.awt.event.MouseEvent evt) {

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)


{
limpiar();
jtxtClaro.grabFocus();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)


{
copiar(jtxtCriptograma.getText());
jtxtClaro.grabFocus();
}

private void jtxtClaroKeyTyped(java.awt.event.KeyEvent evt) {

private void jtxtClaroActionPerformed(java.awt.event.ActionEvent evt)


{

private void jtxtClaroKeyReleased(java.awt.event.KeyEvent evt) {


if (cifrar) {
llenarTxtArea();
}
}

private void jtxtClaroKeyPressed(java.awt.event.KeyEvent evt) {


if (cifrar) {
llenarTxtArea();
}
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)


{
actualizarPublicClave();
elejirOpcion x = new elejirOpcion(this, false);

CURSO: CRIPTOGRAFIA I pg. 76


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

private void jtxtSeparadorKeyPressed(java.awt.event.KeyEvent evt) {


llenarTxtArea();
}

private void jtxtSeparadorKeyReleased(java.awt.event.KeyEvent evt) {


llenarTxtArea();
}

private void
jtxtCifrarDecifrarActionPerformed(java.awt.event.ActionEvent evt) {
cifrar = !cifrar;

cambiarIconoLlaveCifrar();
jtxtCifrarDecifrar.setText(cifrar ? "DESCIFRAR" : "CIFRAR");
jLabel2.setText(cifrar ? "Ingresar Texto en Claro:" : "Ingresar
Criptograma:");
jtxtClaro.setText(null);
copiar(jtxtCriptograma.getText().replace(jtxtSeparador.getText(),
""));
llenarTxtArea();
if(!cifrar){
mostrarMensaje("Se ha copiado el criptograma al
portapapeles.");
}
jtxtClaro.grabFocus();
}

private void jcbxClaveItemStateChanged(java.awt.event.ItemEvent evt)


{

private void jcbxClavePropertyChange(java.beans.PropertyChangeEvent


evt) {

private void jtxtCifrarDecifrarKeyPressed(java.awt.event.KeyEvent


evt) {

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)


{
AcercaDe x = new AcercaDe();
x.setVisible(true);
}

private void jbtnmCerrarActionPerformed(java.awt.event.ActionEvent


evt) {
abrirTabla(false);
}

private void jbtnmNuevoActionPerformed(java.awt.event.ActionEvent


evt) {
// TODO add your handling code here:
}

private void jbtnVerListaKeyPressed(java.awt.event.KeyEvent evt) {


Favoritos x = new Favoritos(this);

CURSO: CRIPTOGRAFIA I pg. 77


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

private void jbtnVerListaMouseClicked(java.awt.event.MouseEvent evt)


{

private void jbtnVerListaActionPerformed(java.awt.event.ActionEvent


evt) {
Favoritos listaRegistros = new Favoritos(this);
}

private void jlblFavoritosMouseClicked(java.awt.event.MouseEvent evt)


{
String claro = jtxtClaro.getText();
if (claro != null && !claro.equals("")) {
_regfavoritos.add(new registroTO((cifrar ? claro :
jtxtCriptograma.getText()), (cifrar ? jtxtCriptograma.getText() : claro),
jcbxClave.getSelectedItem().toString(), getFechaActual()));
guardarObjeto(
dir_regFavoritos,
_regfavoritos);
mostrarMensajeFavoritos("Aadido a favoritos");
} else {
mostrarMensajeError("No se ha encontrado texto para agregar,
ingresa texto en claro.");
jtxtClaro.grabFocus();
}
}

private void jbtnmModificarActionPerformed(java.awt.event.ActionEvent


evt) {
// TODO add your handling code here:
}

private void jbtnmExportarActionPerformed(java.awt.event.ActionEvent


evt) {
// TODO add your handling code here:
}

private void
jlblExportarTodasCskeyMouseClicked(java.awt.event.MouseEvent evt) {
String arch = "mis_claves.cskey";
String ruta = getRutaGuardar(new
FileNameExtensionFilter("Archivos cskey", "cskey"), arch);
if (!ruta.equals(arch)) {
guardarObjeto(ruta, claves, "Claves guardadas!", 0);//el 0 no
significa nada en especial
}
}

private void jlblFavoritosMouseEntered(java.awt.event.MouseEvent evt)


{
jlblFavoritos.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/me_gusta/icons8-
Me gusta Filled-25.png")));
}

private void jlblFavoritosMouseReleased(java.awt.event.MouseEvent


evt) {

CURSO: CRIPTOGRAFIA I pg. 78


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

private void jlblFavoritosMouseExited(java.awt.event.MouseEvent evt)


{
jlblFavoritos.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/me_gusta/icons8-
Me gusta-25.png")));
}

private void jlblCargarCskeyMouseClicked(java.awt.event.MouseEvent


evt) {
String arch = "mi_clave.cskey";
String ruta = getRutaAbrir(new FileNameExtensionFilter("Archivos
cskey", "cskey"), "Cargar", arch);
if (!ruta.equals(arch)) {
cargarClaves((ArrayList<ClaveString>) abrirObjeto(ruta,
true));
}
}

private void jlblExportarUnaCskeyKeyPressed(java.awt.event.KeyEvent


evt) {

private void
jlblExportarUnaCskeyMouseClicked(java.awt.event.MouseEvent evt) {
ArrayList<ClaveString> clave = new ArrayList<ClaveString>();
clave.add((ClaveString) jcbxClave.getSelectedItem());
String arch = clave.get(0).getNombre() + ".cskey";
String ruta = getRutaGuardar(new
FileNameExtensionFilter("Archivos cskey", "cskey"), arch);
if (!ruta.equals(arch)) {
guardarObjeto(ruta, clave, "Clave guardada!");
}
}

private void jlblCifrarMouseClicked(java.awt.event.MouseEvent evt) {


llenarTxtArea();
}

private void
jlblAdministrarClavesMouseClicked(java.awt.event.MouseEvent evt) {
AdministrarClaves x = new AdministrarClaves(this);
}

private void jlblResetClavesMouseClicked(java.awt.event.MouseEvent


evt) {
resetearClaves();
}
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JScrollPane jScrollPane1;

CURSO: CRIPTOGRAFIA I pg. 79


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

private javax.swing.JScrollPane jScrollPane2;


private javax.swing.JButton jbtnVerLista;
private javax.swing.JButton jbtnmCerrar;
private javax.swing.JButton jbtnmExportar;
private javax.swing.JButton jbtnmModificar;
private javax.swing.JButton jbtnmNuevo;
private javax.swing.JComboBox<String> jcbxClave;
private javax.swing.JLabel jlblAdministrarClaves;
private javax.swing.JLabel jlblCargarCskey;
private javax.swing.JLabel jlblCifrar;
private javax.swing.JLabel jlblExportarTodasCskey;
private javax.swing.JLabel jlblExportarUnaCskey;
private javax.swing.JLabel jlblFavoritos;
private javax.swing.JLabel jlblNombreClaveMatriz;
private javax.swing.JLabel jlblResetClaves;
private javax.swing.JRadioButton jrbtnModificable;
private javax.swing.JTable jtblTabla;
private javax.swing.JButton jtxtCifrarDecifrar;
private javax.swing.JTextField jtxtClaro;
private javax.swing.JTextArea jtxtCriptograma;
private javax.swing.JTextField jtxtSeparador;
// End of variables declaration

@Override
public Image getIconImage() {
Image retValue = Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("imagenes/hexa-
50.png"));

return retValue;
}

private void limpiar() {


jtxtClaro.setText("");
jtxtCriptograma.setText("");
}

private void llenarJcbx() {


limpiarJcbx();
for (int i = 0; i < claves.size(); i++) {
modeloCBox.addElement(claves.get(i));
System.out.println(claves.get(i));
}
}

private void llenarTxtArea() {


try {
ClaveString k = (ClaveString) jcbxClave.getSelectedItem();
String texto = jtxtClaro.getText();
jtxtCriptograma.setText(
cifrar
? ClaveString.cifrar(texto, k,
jtxtSeparador.getText(), jtxtSeparador.getText())
: ClaveString.descifrar(texto, k,
jtxtSeparador.getText(), jtxtSeparador.getText())
);
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Ha ocurrido un error al
momento de " + (cifrar ? "cifrar" : "descifrar"), "Error al " + (cifrar ?
"cifrar" : "descifrar"), JOptionPane.CLOSED_OPTION);
}

CURSO: CRIPTOGRAFIA I pg. 80


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

private void copiar(String texto) {


Clipboard clipboard =
Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection data = new StringSelection(texto);
clipboard.setContents(data, data);
}

private void mostrarPrograma() {


try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.log
ging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.log
ging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.log
ging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.log
ging.Level.SEVERE, null, ex);
}
try {
Thread.sleep(600);
this.setVisible(true);
} catch (Exception ex) {
System.out.println("ha ocurrido un error: " + ex);
}
}

public void abrirTabla(boolean b) {


if (b) {
llenarTabla((ClaveString) jcbxClave.getSelectedItem());
}
setBounds(getX(), getY(), (b ? 1177 : 548), 434);
setLocationRelativeTo(null);
_tablaAbierta = b;
}

CURSO: CRIPTOGRAFIA I pg. 81


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public void llenarTabla(ClaveString clave) {


boolean _editable;
jlblNombreClaveMatriz.setText(clave.getNombre());//llenar el
jrbtnModificable.setSelected(clave.isModificable());
jrbtnModificable.setEnabled(clave.isModificable());
modeloTabla = clave.getTableModel(false);
jtblTabla.setModel(modeloTabla);
_editable = clave.isModificable();
jrbtnModificable.setSelected(_editable);
jbtnmModificar.setEnabled(_editable);
}

private void llenarTabla() {


llenarTabla((ClaveString) jcbxClave.getSelectedItem());
}

public void actualizarPublicClave() {


_clave = (ClaveString) jcbxClave.getSelectedItem();
}

public ClaveString getSelectedClave() {


actualizarPublicClave();
return _clave;
}

public void cargarRegistro(String texto_claro, String criptograma,


String clave) {
jtxtClaro.setText(texto_claro);
jtxtCriptograma.setText(criptograma);
jcbxClave.setSelectedItem(clave);
}

private ArrayList<registroTO> cargarListaRegistros() {


ArrayList<registroTO> x = (ArrayList<registroTO>)
abrirObjeto(dir_regFavoritos, false);
return (x != null ? x : new ArrayList<registroTO>());
}

public void mostrarMensajeFavoritos(String m) {


JOptionPane.showMessageDialog(null, m, "",
JOptionPane.INFORMATION_MESSAGE,
new
javax.swing.ImageIcon(getClass().getResource("/imagenes/me_gusta/icons8-
Me gusta Filled-25.png"))
);
}

public void mostrarMensajeGuardar(String m) {


JOptionPane.showMessageDialog(null, m, "",
JOptionPane.INFORMATION_MESSAGE,
new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Guardar-
25.png"))
);
}

public void mostrarMensajeGuardarTodo(String m) {


JOptionPane.showMessageDialog(null, m, "",
JOptionPane.INFORMATION_MESSAGE,

CURSO: CRIPTOGRAFIA I pg. 82


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Guardar
todo-25.png"))
);
}

public void mostrarMensaje(String m) {


JOptionPane.showMessageDialog(null, m);
}

public void mostrarMensajeError(String m) {


JOptionPane.showMessageDialog(null, m, "",
JOptionPane.INFORMATION_MESSAGE,
new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Error-
96.png"))
);
}

public static String getFechaActual() {


Date fecha = new Date();
SimpleDateFormat formatoFecha = new
SimpleDateFormat("dd/MM/YYYY");
return formatoFecha.format(fecha);

public void guardarObjeto(String ruta, Object obj) {


try {
try (ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream(ruta))) {
oos.writeObject(obj);
}
} catch (IOException e) {
mostrarMensaje("No se ha podido guardar.");
}
}

public void guardarObjeto(String ruta, Object obj, String mensaje) {


try {
try (ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream(ruta))) {
oos.writeObject(obj);
oos.close();
mostrarMensajeGuardar(mensaje);
}
} catch (IOException e) {
mostrarMensaje("No se ha podido guardar.");
}
}

public void guardarObjeto(String ruta, Object obj, String mensaje,


int todos) {
try {
try (ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream(ruta))) {
oos.writeObject(obj);
oos.close();
mostrarMensajeGuardarTodo(mensaje);
}
} catch (IOException e) {
mostrarMensaje("No se ha podido guardar.");

CURSO: CRIPTOGRAFIA I pg. 83


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

}
}
public Object abrirObjeto(String ruta, boolean b) {
Object o = null;
try {
try (ObjectInputStream ois = new ObjectInputStream(new
FileInputStream(ruta))) {
o = ois.readObject();
}
} catch (IOException | ClassNotFoundException e) {
if (b) {
mostrarMensaje("No se ha podido cargar. " + e);
}
}
return o;
}

public String getRutaAbrir(FileNameExtensionFilter filtro, String m,


String text) {
JFileChooser open = new JFileChooser();
open.setSelectedFile(new File(text));
open.setCurrentDirectory(ultimaRutaAbierta);
open.setFileFilter(filtro);
open.setApproveButtonText(m);
open.showOpenDialog(open);
ultimaRutaAbierta = open.getCurrentDirectory();
return open.getSelectedFile().toString();
}

public String getRutaGuardar(FileNameExtensionFilter filtro, String


text) {
JFileChooser save = new JFileChooser();
save.setSelectedFile(new File(text));
save.setCurrentDirectory(ultimaRutaAbierta);
save.setFileFilter(filtro);
save.setApproveButtonText("Guardar");
save.showSaveDialog(null);
ultimaRutaAbierta = save.getCurrentDirectory();
return save.getSelectedFile().toString();
}

private void crearCarpetaFavoritos() {


File f = new
File(dir_regFavoritos.replace("regfav_dataloader.dl", ""));
f.mkdirs();
f = new File(dir_regFavoritos);
if (!f.exists()) {
try {
System.out.println(f.createNewFile());
} catch (IOException ex) {
System.out.println("error al crear archivo inicial
regFavoritos " + ex);
}
}
}

public void eliminarFavorito(int i, Favoritos fav) {


if (JOptionPane.showConfirmDialog(null, "Deseas eliminar este
registro de tus favoritos?") == 0) {
_regfavoritos.remove(i);
guardarObjeto(
dir_regFavoritos,

CURSO: CRIPTOGRAFIA I pg. 84


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

_regfavoritos);
fav.llenarTabla();
mostrarMensajeFavoritos("El registro ha sido eliminado de tus
favoritos");
}
}

public void limpiarFavoritos(Favoritos fav) {


if (JOptionPane.showConfirmDialog(null, "Deseas eliminar todos
los registros de tus favoritos?") == 0) {
while (!_regfavoritos.isEmpty()) {
_regfavoritos.remove(0);
}
guardarObjeto(
dir_regFavoritos,
_regfavoritos);
fav.llenarTabla();
mostrarMensajeFavoritos("Ya no tienes favoritos, aade
uno!");
}
}

private void cambiarIconoLlaveCifrar() {


jlblCifrar.setIcon(new
javax.swing.ImageIcon(getClass().getResource((cifrar ?
"/imagenes/llave/icons8-Llave-25-2.png" : "/imagenes/llave/icons8-Llave-
25.png"))));
}

private void cargarClaves(ArrayList<ClaveString> claves) {


if (claves != null) {
ClaveString c;
while (!claves.isEmpty()) {
c = claves.get(0);
this.claves.add(c);
claves.remove(0);
}
llenarJcbx();
} else {
mostrarMensajeError("No se han encontrado claves para
cargar.");
}
}

private void limpiarJcbx() {


jcbxClave.removeAllItems();
}

void eliminarClave(int i, AdministrarClaves administrar) {


if (JOptionPane.showConfirmDialog(null, "Deseas eliminar esta
clave?") == 0) {
claves.remove(i);
guardarClaves();
administrar.llenarTabla();
llenarJcbx();
mostrarMensajeFavoritos("La clave ha sido eliminada.");
}
}

void limpiarClaves(AdministrarClaves administrar) {


if (JOptionPane.showConfirmDialog(null, "Deseas eliminar todas
las claves?") == 0) {

CURSO: CRIPTOGRAFIA I pg. 85


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

while (!claves.isEmpty()) {
claves.remove(0);
}
guardarClaves();
administrar.llenarTabla();
llenarJcbx();
mostrarMensajeFavoritos("Ya no tienes claves, aade una!");
}
}

void resetearClaves() {
if (JOptionPane.showConfirmDialog(null, "Deseas resetear sus
claves?, esto restablecer las claves por defecto y eliminar las
dems.") == 0) {
while (!claves.isEmpty()) {
claves.remove(0);
}
generarClavesPorDefecto();
llenarJcbx();
mostrarMensajeFavoritos("Las claves han sido
restablecidas.");
}
}

private void generarClavesPorDefecto() {


claves.add(new ClaveString());
claves.add(new ClaveString(
new String[]{"2A", "2B", "2C", "2D", "2E", "2F", "2G",
"2H", "9I"},
new String[]{"9A", "9B", "9C", "9D", "9E", "9F", "9G",
"9H", "9I", "9J"},
new String[][]{
{"A", "B", "C", "D", "E", "F", "a", "k", "p", "9"},
{"G", "H", "I", "J", "K", "L", "b", "l", "q", "8"},
{"M", "N", "", "O", "P", "Q", "c", "m", "r", "7"},
{"R", "S", "T", "U", "V", " ", "d", "n", "s", "6"},
{"X", "Y", "Z", "", "", "", "e", "", "t", "5"},
{"", "", "f", "g", "h", "i", "j", "o", "u", "4"},
{"v", "w", "x", "y", "z", "", "", "", "", "3"},
{"", ",", ";", "*", "/", ":", "?", "", "'", "2"},
{"", "!", "|", "%", "&", "", "", "$", "0", "1"}},
"Polybios Extendido",
"XX",
"#"
));
claves.add(new ClaveString(
new String[]{"01", "02"},
new String[]{"00", "01", "10", "11", "21"},
new String[][]{
{"0", "1", "2", "3", "4"},
{"5", "6", "7", "8", "9"}},
"Polybios Numrico",
"xx",
"#"
));
claves.add(new ClaveString(
new String[]{"0000", "0001", "0011", "0100", "0110",
"0111", "0010", "1010", "1111"},
new String[]{"1111", "1000", "1100", "1110", "1010",
"1001", "1101", "0000", "0111", "0101"},
new String[][]{
{"A", "B", "C", "D", "E", "F", "a", "k", "p", "9"},

CURSO: CRIPTOGRAFIA I pg. 86


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

{"G", "H", "I", "J", "K", "L", "b", "l", "q", "8"},
{"M", "N", "", "O", "P", "Q", "c", "m", "r", "7"},
{"R", "S", "T", "U", "V", " ", "d", "n", "s", "6"},
{"X", "Y", "Z", "", "", "", "e", "", "t", "5"},
{"", "", "f", "g", "h", "i", "j", "o", "u", "4"},
{"v", "w", "x", "y", "z", "", "", "", "", "3"},
{"", ",", ";", "*", "/", ":", "?", "", "'", "2"},
{"", "!", "|", "%", "&", "", "", "$", "0", "1"}},
"Polybios Binario",
"XXXX",
"#"
));
claves.add(new ClaveString(
new String[]{"221", "365", "616", "252", "765", "172",
"376", "703", "605"},
new String[]{"704", "604", "360", "615", "760", "170",
"340", "220", "110", "222"},
new String[][]{
{"A", "B", "C", "D", "E", "F", "a", "k", "p", "9"},
{"G", "H", "I", "J", "K", "L", "b", "l", "q", "8"},
{"M", "N", "", "O", "P", "Q", "c", "m", "r", "7"},
{"R", "S", "T", "U", "V", " ", "d", "n", "s", "6"},
{"X", "Y", "Z", "", "", "", "e", "", "t", "5"},
{"", "", "f", "g", "h", "i", "j", "o", "u", "4"},
{"v", "w", "x", "y", "z", "", "", "", "", "3"},
{"", ",", ";", "*", "/", ":", "?", "", "'", "2"},
{"", "!", "|", "%", "&", "", "", "$", "0", "1"}},
"Polybios Octal",
"XXX",
"#"
));
claves.add(new ClaveString(
new String[]{"F2A", "11B", "E2C", "82D", "2E1", "1E5",
"25F", "2AA", "29E"},
new String[]{"21A", "19B", "29C", "9D3", "5E5", "92F",
"34A", "78C", "97A", "99D"},
new String[][]{
{"A", "B", "C", "D", "E", "F", "a", "k", "p", "9"},
{"G", "H", "I", "J", "K", "L", "b", "l", "q", "8"},
{"M", "N", "", "O", "P", "Q", "c", "m", "r", "7"},
{"R", "S", "T", "U", "V", " ", "d", "n", "s", "6"},
{"X", "Y", "Z", "", "", "", "e", "", "t", "5"},
{"", "", "f", "g", "h", "i", "j", "o", "u", "4"},
{"v", "w", "x", "y", "z", "", "", "", "", "3"},
{"", ",", ";", "*", "/", ":", "?", "", "'", "2"},
{"", "!", "|", "%", "&", "", "", "$", "0", "1"}},
"Polybios Hexadecimal",
"XXX",
"#"
));
claves.add(new ClaveString(
new String[]{"@", "", "#", "", "", "",
"", "", "{~}"},
new String[]{"", "@#&", "", "", "", "",
"", "", "", ""},
new String[][]{
{"A", "B", "C", "D", "E", "F", "a", "k", "p", "9"},
{"G", "H", "I", "J", "K", "L", "b", "l", "q", "8"},
{"M", "N", "", "O", "P", "Q", "c", "m", "r", "7"},
{"R", "S", "T", "U", "V", " ", "d", "n", "s", "6"},
{"X", "Y", "Z", "", "", "", "e", "", "t", "5"},

CURSO: CRIPTOGRAFIA I pg. 87


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

{"", "", "f", "g", "h", "i", "j", "o", "u", "4"},
{"v", "w", "x", "y", "z", "", "", "", "", "3"},
{"", ",", ";", "*", "/", ":", "?", "", "'", "2"},
{"", "!", "|", "%", "&", "", "", "$", "0", "1"}},
"Polybios ASCII",
"XXX",
"#"
));
guardarClaves();

private void guardarClaves() {


File f = new
File(dir_regFavoritos.replace("cskeys_dataloader.dl", ""));
f.mkdirs();
f = new File(dir_regFavoritos);
if (!f.exists()) {
try {
System.out.println(f.createNewFile());
} catch (IOException ex) {
System.out.println("error al crear archivo inicial cskeys
" + ex);
}
}
guardarObjeto(
dir_claves,
claves);
}

public void limpiarClaves() {


while (!claves.isEmpty()) {
claves.remove(0);
}

}
private void cargarClaves() {
try {
ArrayList<ClaveString> obj = (ArrayList<ClaveString>)
abrirObjeto(dir_claves, false);
limpiarClaves();
cargarClaves(obj);
} catch (Exception e) {
generarClavesPorDefecto();
}
}

CURSO: CRIPTOGRAFIA I pg. 88


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CDIGO EN JAVA DE LA CLASE INTRO


package GUI;
public class Intro extends javax.swing.JFrame {

boolean x;

/**
* Creates new form Intro
*/
public Intro() {
initComponents();
setLocationRelativeTo(null);
setVisible(true);
x = true;

}
@SuppressWarnings("unchecked")
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE)
;
setUndecorated(true);
setType(java.awt.Window.Type.UTILITY);

jPanel1.setBackground(new java.awt.Color(0, 153, 255));


jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
jPanel1MouseEntered(evt);
}
});

jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/Imagen1.png")));
// NOI18N

jLabel2.setBackground(new java.awt.Color(255, 255, 255));


jLabel2.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
jLabel2.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setText("UNIVERSIDAD NACIONAL JOS FAUSTINO SNCHEZ
CARRIN");

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(138, 138, 138)
.addComponent(jLabel1)

CURSO: CRIPTOGRAFIA I pg. 89


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

.addContainerGap(138, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel2,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap(60, Short.MAX_VALUE)
.addComponent(jLabel1,
javax.swing.GroupLayout.PREFERRED_SIZE, 286,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE, 43,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void jPanel1MouseEntered(java.awt.event.MouseEvent evt) {


if (x) {
mostrarPrograma();
x = false;
}

CURSO: CRIPTOGRAFIA I pg. 90


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public static void main(String args[]) {


try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Intro.class.getName()).log(java.util.l
ogging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Intro.class.getName()).log(java.util.l
ogging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Intro.class.getName()).log(java.util.l
ogging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Intro.class.getName()).log(java.util.l
ogging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Intro().setVisible(true);
}
});
}
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private void mostrarPrograma() {
GUI x = new GUI();
this.dispose();
}
}

CURSO: CRIPTOGRAFIA I pg. 91


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CDIGO EN JAVA DE LA CLASE TABLA NUEVA PESTAA


package GUI;

import Clases.ClaveString;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.ArrayList;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
public class TablaNuevaPestania extends javax.swing.JFrame {

DefaultTableModel modelo;
GUI gui;
boolean _editable;

AdministrarClaves ventana;
ClaveString clave;
public TablaNuevaPestania(GUI gui, boolean editable) {
this.gui = gui;
this._editable = editable;
ventana = null;
this.clave = gui.getSelectedClave();
initComponents();
cargarInformacionDeGUI();
look();
setVisible(true);
setLocationRelativeTo(null);
}

public TablaNuevaPestania(AdministrarClaves ventana, ClaveString


clave, boolean editable) {
this.gui = ventana.gui;
this.ventana = ventana;
this._editable = editable;
this.clave = clave;
initComponents();
cargarInformacionDeGUI();
look();
setVisible(true);
setLocationRelativeTo(null);
}
@SuppressWarnings("unchecked")
private void initComponents() {

jPanel2 = new javax.swing.JPanel();


jScrollPane2 = new javax.swing.JScrollPane();
jtblTabla = new javax.swing.JTable();
jbtnmExportar = new javax.swing.JButton();
jbtnmNuevo = new javax.swing.JButton();
jbtnmModificar = new javax.swing.JButton();
jbtnmCerrar = new javax.swing.JButton();
jrbtnModificable = new javax.swing.JRadioButton();
jlblNombreClaveMatriz = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setIconImage(getIconImage());

jPanel2.setBackground(new java.awt.Color(255, 255, 255));

CURSO: CRIPTOGRAFIA I pg. 92


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Matriz"))
;

jtblTabla.setFont(new java.awt.Font("Corbel", 1, 14)); // NOI18N


jtblTabla.setForeground(new java.awt.Color(51, 51, 60));
jtblTabla.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"", "A1", "B1", "C1", "D1"},
{"A2", "a", "b", "c", "d"},
{"B2", "e", "f", "g", "h"},
{"C2", "i", "j", "k", "l"},
{"D2", "m", "n", "", "o"}
},
new String [] {
"", "", "", "", ""
}
) {
boolean[] canEdit = new boolean [] {
false, false, false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex)


{
return canEdit [columnIndex];
}
});
jtblTabla.setColumnSelectionAllowed(true);
jtblTabla.setGridColor(new java.awt.Color(153, 153, 153));
jtblTabla.getTableHeader().setReorderingAllowed(false);
jScrollPane2.setViewportView(jtblTabla);

jtblTabla.getColumnModel().getSelectionModel().setSelectionMode(javax.swi
ng.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

jbtnmExportar.setText("Exportar");
jbtnmExportar.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnmExportarActionPerformed(evt);
}
});

jbtnmNuevo.setText("Nuevo");
jbtnmNuevo.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnmNuevoActionPerformed(evt);
}
});

jbtnmModificar.setText("Aplicar Cambios");
jbtnmModificar.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnmModificarActionPerformed(evt);
}
});

jbtnmCerrar.setText("Cerrar");
jbtnmCerrar.addActionListener(new java.awt.event.ActionListener()
{

CURSO: CRIPTOGRAFIA I pg. 93


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

public void actionPerformed(java.awt.event.ActionEvent evt) {


jbtnmCerrarActionPerformed(evt);
}
});
jrbtnModificable.setBackground(new java.awt.Color(255, 255, 255));
jrbtnModificable.setText("Modificable");

jlblNombreClaveMatriz.setFont(new java.awt.Font("Arial", 1, 24));


jlblNombreClaveMatriz.setForeground(new java.awt.Color(153, 153, 153));

jlblNombreClaveMatriz.setHorizontalAlignment(javax.swing.SwingConstants.C
ENTER);
jlblNombreClaveMatriz.setText("Convertir nmero decimal a
hexadecimal");

javax.swing.GroupLayout jPanel2Layout = new


javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jlblNombreClaveMatriz,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jScrollPane2)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jrbtnModificable,
javax.swing.GroupLayout.DEFAULT_SIZE, 208, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jbtnmNuevo,
javax.swing.GroupLayout.PREFERRED_SIZE, 111,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnmExportar,
javax.swing.GroupLayout.PREFERRED_SIZE, 116,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnmModificar,
javax.swing.GroupLayout.PREFERRED_SIZE, 108,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnmCerrar,
javax.swing.GroupLayout.PREFERRED_SIZE, 115,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()

CURSO: CRIPTOGRAFIA I pg. 94


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

.addGap(4, 4, 4)
.addComponent(jlblNombreClaveMatriz)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 285,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(jbtnmExportar)
.addComponent(jbtnmNuevo)
.addComponent(jbtnmModificar)
.addComponent(jbtnmCerrar)
.addComponent(jrbtnModificable))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}
private void jbtnmNuevoActionPerformed(java.awt.event.ActionEvent
evt) {
}

private void jbtnmCerrarActionPerformed(java.awt.event.ActionEvent


evt) {
dispose();
}

private void jbtnmModificarActionPerformed(java.awt.event.ActionEvent


evt) {

}
private void jbtnmExportarActionPerformed(java.awt.event.ActionEvent
evt) {
ArrayList<ClaveString> clave = new ArrayList<ClaveString>();
clave.add(this.clave);
String arch = clave.get(0).getNombre() + ".cskey";
String ruta = gui.getRutaGuardar(new
FileNameExtensionFilter("Archivos cskey", "cskey"), arch);
if (!ruta.equals(arch)) {
gui.guardarObjeto(ruta, clave, "Clave guardada!");
}
}

CURSO: CRIPTOGRAFIA I pg. 95


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

private javax.swing.JPanel jPanel2;


private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JButton jbtnmCerrar;
private javax.swing.JButton jbtnmExportar;
private javax.swing.JButton jbtnmModificar;
private javax.swing.JButton jbtnmNuevo;
private javax.swing.JLabel jlblNombreClaveMatriz;
private javax.swing.JRadioButton jrbtnModificable;
private javax.swing.JTable jtblTabla;
private void look() {
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(TablaNuevaPestania.class.getName()).lo
g(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(TablaNuevaPestania.class.getName()).lo
g(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(TablaNuevaPestania.class.getName()).lo
g(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(TablaNuevaPestania.class.getName()).lo
g(java.util.logging.Level.SEVERE, null, ex);
}
}
private void cargarInformacionDeGUI() {
jlblNombreClaveMatriz.setText(clave.getNombre());//llenar el
jrbtnModificable.setSelected(clave.isModificable());
jrbtnModificable.setEnabled(clave.isModificable());
modelo = clave.getTableModel(_editable);
jtblTabla.setModel(modelo);
boolean editable = clave.isModificable();
jrbtnModificable.setSelected(editable);
jbtnmModificar.setEnabled(_editable);
jbtnmModificar.setEnabled((_editable?true:editable));
}
@Override
public Image getIconImage() {
Image retValue = Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("imagenes/hexa-50.png"));

return retValue;
}
}

CURSO: CRIPTOGRAFIA I pg. 96


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

CDIGO EN JAVA DE LA CLASE ELEGIR OPCIN


package GUI;

import Clases.ClaveString;
import java.awt.Image;
import java.awt.Toolkit;

public class elejirOpcion extends javax.swing.JFrame {

public static int _eleccion = -1;


ClaveString _clave;
GUI gui;
boolean _editable;

/**
* Creates new form elejirOpcion
*/
public elejirOpcion(GUI gui, boolean editable) {
this.gui = gui;
this._editable = editable;
_clave=gui.getSelectedClave();
initComponents();
look();
setLocationRelativeTo(null);
setVisible(true);
}
@SuppressWarnings("unchecked")
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jlblNombreClaveMatriz = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setIconImage(getIconImage());
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jlblNombreClaveMatriz.setFont(new java.awt.Font("Arial", 1, 24));
jlblNombreClaveMatriz.setForeground(new java.awt.Color(153, 153,
153));
jlblNombreClaveMatriz.setHorizontalAlignment(javax.swing.SwingConstants.C
ENTER);
jlblNombreClaveMatriz.setText("Elija una opcin:");
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Por nueva
copia-25(1).png"))); // NOI18N
jLabel1.setText("Abrir en una nueva pestaa");
jLabel1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel1MouseClicked(evt);
}
});
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Abrir
vista en una pestaa nueva-25.png"))); // NOI18N
jLabel2.setText("Abrir en esta pestaa ");
jLabel2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {

CURSO: CRIPTOGRAFIA I pg. 97


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

jLabel2MouseClicked(evt);
}
});
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel3.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/icons8-Cerrar
ventana-25.png"))); // NOI18N
jLabel3.setText("Cerrar ");
jLabel3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel3MouseClicked(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jlblNombreClaveMatriz,
javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jlblNombreClaveMatriz)
.addGap(18, 18, 18)
.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel2)
.addGap(11, 11, 11)
.addComponent(jLabel3)
.addContainerGap())
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

CURSO: CRIPTOGRAFIA I pg. 98


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

pack();
}
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
TablaNuevaPestania _nuevaPestania = new
TablaNuevaPestania(gui,_editable);
_nuevaPestania.setVisible(true);
dispose();
}
private void jLabel2MouseClicked(java.awt.event.MouseEvent evt) {
gui.abrirTabla(true);
dispose();
}
private void jLabel3MouseClicked(java.awt.event.MouseEvent evt) {
dispose();
}
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel jlblNombreClaveMatriz;
private void look(){

try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(elejirOpcion.class.getName()).log(java
.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(elejirOpcion.class.getName()).log(java
.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(elejirOpcion.class.getName()).log(java
.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(elejirOpcion.class.getName()).log(java
.util.logging.Level.SEVERE, null, ex);
}
}

@Override
public Image getIconImage() {
Image retValue = Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("imagenes/hexa-
50.png"));

return retValue;
}
}

CURSO: CRIPTOGRAFIA I pg. 99


U UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION ING.INFORMATICA

XIII. BIBILIOGRAFIA

https://es.wikipedia.org/wiki/Sistema_binario

http://cryptomex.org/CursoCriptoTec/polybios.html

https://es.wikipedia.org/wiki/Sistema_octal

http://www.elcodigoascii.com.ar/

https://www.taringa.net/posts/info/950198/Codigos-ASCII-

caracteres-diferentes-simbolos.html

http://www.ite.educacion.es/formacion/materiales/47/cd/

mod1b/1bb_4.htm

http://www.grupoalquerque.es/ferias/2012/archivos/s-

n_nuevos/s-n_hexadecimal.pdf

http://www.disfrutalasmatematicas.com/numeros/binarios-

numeros-sistema.html

http://platea.pntic.mec.es/~lgonzale/tic/binarios/numeraci

on.html

CURSO: CRIPTOGRAFIA I pg. 100

También podría gustarte