Practica Encriptacion

10
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán. Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales 1 Instituto Tecnológico de Minatitlán Ingeniería en Sistemas Computacionales Práctica de Seguridad En Redes Nombre de la Practica: “Encriptación ASCII” 03 de Enero del 2015 Reporte No. 1 Integrantes Dianeth Guadalupe Reyna Armas Emmanuel Arenas Aquino

description

Dada una cadena de caracteres (mensaje) se selecciona carácter por carácter y se convierte en código binario, donde saldrán 8 dígitos de 0´s y 1´s, para después de manera aleatoria de esos 8 números abra dos parejas de números que se cambiaran entre sí, por lo tanto 4 dígitos de los 8 de cada letra no se encuentran en sus posiciones originales, las parejas de dígitos se irán guardando en una variable String para obtener una key(Clave), donde la key dirá cuáles son las posiciones de cada letra que se cambiarán, para poder desencriptarlo.

Transcript of Practica Encriptacion

Page 1: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

1

Instituto Tecnológico de Minatitlán

Ingeniería en Sistemas Computacionales

Práctica de Seguridad En Redes

Nombre de la Practica: “Encriptación ASCII”

03 de Enero del 2015

Reporte No. 1

Integrantes

Dianeth Guadalupe Reyna Armas

Emmanuel Arenas Aquino

Page 2: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

2

Objetivo general: Realizar un método de encriptación por medio de un lenguaje de

programación.

Material

1 Computadora portátil

1 DELL Windows 7 home Premium 64 bits, Ram 6 GB, Intel Core i5, 2.50GHz, 1T

de disco duro

IDE NetBeans 8.2.0

Java

JDK

Marco Teórico.

ASCII

ASCII (American Standard Code for Information Interchange — Código

Estándar Estadounidense para el Intercambio de Información), pronunciado

generalmente áski o ásci, es un código de caracteres basado en el alfabeto

latino, tal como se usa en inglés moderno.

El código ASCII utiliza 7 bits para representar los caracteres, aunque

inicialmente empleaba un bit adicional (bit de paridad) que se usaba para

detectar errores en la transmisión.

En la actualidad define códigos para 32 caracteres no imprimibles, de los

cuales la mayoría son caracteres de control que tienen efecto sobre cómo se

procesa el texto, más otros 95 caracteres imprimibles que les siguen en la

numeración (empezando por el carácter espacio).

Casi todos los sistemas informáticos actuales utilizan el código ASCII o una

extensión compatible para representar textos y para el control de dispositivos que

manejan texto como el teclado.

Cifrado.

EL cifrado es un procedimiento que utiliza un algoritmo de cifrado con

cierta clave (clave de cifrado) transforma un mensaje, sin atender a su estructura

lingüística o significado, de tal forma que sea incomprensible o, al menos, difícil de

comprender a toda persona que no tenga la clave secreta (clave de descifrado)

del algoritmo. Las claves de cifrado y de descifrado pueden ser iguales

(criptografía simétrica) o no (criptografía asimétrica).

El juego de caracteres (alfabeto) usado en el mensaje sin cifrar puede no

ser el mismo que el juego de caracteres que se usa en el mensaje cifrado.

Page 3: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

3

Aunque el cifrado pueda volver secreto el contenido de un documento, es

necesario complementarlo con otras técnicas criptográficas para poder

comunicarse de manera segura. Puede ser necesario garantizar

la integridad la autenticación de las partes.

Descripción de la encriptación.

Dada una cadena de caracteres (mensaje) se selecciona carácter por

carácter y se convierte en código binario, donde saldrán 8 dígitos de 0´s y 1´s,

para después de manera aleatoria de esos 8 números abra dos parejas de

números que se cambiaran entre sí, por lo tanto 4 dígitos de los 8 de cada letra no

se encuentran en sus posiciones originales, las parejas de dígitos se irán

guardando en una variable String para obtener una key(Clave), donde la key

dirá cuáles son las posiciones de cada letra que se cambiarán, para poder

desencriptarlo.

Desarrollo de la práctica.

Encriptación

Mensaje a código ASCII

//Se avanza letra a letra el mensaje que se aya introducido

for (int i=0; i<mensaje.length(); i++){

//Captar el carácter desde la primera letra del mensaje

caracter=mensaje.charAt(i);

//guardamos en la variable codigoASCII

codigoASCII=caracter;

/* Para verificar si se está realizando correctamente verificamos

imprimiendo un mensaje*/

System.out.println("caracter: " + (i+1) + ":" + caracter + "->"+ codASCII);

Código ASCII a Código Binario

/*Se coloca una variable binario en 0 para que cada letra

que entre inicie en 0*/

Binario="";

/*Se crea una variable j. Esta es igual a 7 porque en

Page 4: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

4

código ASCII ocupa 8 dígitos*/

for (int j=7; j>=0; j--){

if (codigoASCII>=Math.pow(2,j)){

codigoASCII-=Math.pow(2,j);

Binario=Binario.concat("1");

}

else

Binario=Binario.concat("0");

}

/* Para verificar si se está realizando correctamente verificamos

imprimiendo un mensaje*/

System.out.println(binario);

/*Se alternan dos parejas de caracteres.Se generan

números entre 0 y 7 porque no leerá mayores para

desencriptar*/

do{intercambio1=((int) (Math.random()*10));}while (intercambio1>7);

do{intercambio2=((int) (Math.random()*10));}while (intercambio2>7 ||

intercambio2==intercambio1);

do{intercambio3=((int) (Math.random()*10));}while (intercambio3>7 ||

intercambio3==intercambio1 || intercambio3==intercambio2);

do{intercambio4=((int) (Math.random()*10));}while (intercambio4>7 ||

intercambio4==intercambio1 || intercambio4==intercambio2 ||

intercambio4==intercambio3);

Page 5: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

5

Se encripta el Código Binario

/*Se toma el código binario y se intercambia*/

String BinarioEncriptado="";

/*Se recorren 8 posiciones del binario original

Porque todos los digitos siempre tendran 8 digitos*/

for (int x=0; x<8; x++){

//se guarda la posicion de binario que se recorre

caracter=Binario.charAt(x);

/* Para realizar el intercambio*/

if (x==intercambio1) caracter=Binario.charAt(intercambio2);

if (x==intercambio2) caracter=Binario.charAt(intercambio1);

if (x==intercambio3) caracter=Binario.charAt(intercambio4);

if (x==intercambio4) caracter=Binario.charAt(intercambio3);

/* El número que está en binario se pondra en

BinarioEncriptado*/

BinarioEncriptado=BinarioEncriptado.concat(Character.toString(cara

cter));

}

/* Para verificar si se está realizando correctamente verificamos

imprimiendo un mensaje*/

System.out.println(BinarioEncriptado);

Page 6: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

6

/*Añadimo a la cadena encriptado el codigo encriptado de

cada letra*/

Encriptado=Encriptado.concat(BinarioEncriptado);

/*Se guarda la key transformando de entero a cadena*/

Key=Key.concat(String.valueOf(intercambio1) +

String.valueOf(intercambio2) +

String.valueOf(intercambio3) + String.valueOf(intercambio4));

}

Desencriptación

String Binario="";

/*contador.Registro de que

letra se analiza.se analizan 8 digitos*/

int letra=0;

/*recorer caracater a caracter la cadena key*/

int indexKey=0;

/*1->49 2 ->50 en ASCII*

int intercambio1=Character.valueOf(Key.charAt(indexKey))-48;

indexKey++;

int intercambio2=Character.valueOf(Key.charAt(indexKey))-48;

indexKey++;

int intercambio3=Character.valueOf(Key.charAt(indexKey))-48;

indexKey++;

int intercambio4=Character.valueOf(Key.charAt(indexKey))-48;

indexKey++;

Page 7: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

7

/*transformar el grupo de 8 digitos a caracteres */

char caracter;

int codigoASCII;

/*Contador para ver si se llego a 8 digitos de la

cadena total*/

int aux=0;

/*Se almacena el desencriptado*/

String MensajeDesencriptado="";

/*Todos los valores encontrados en la variable encriptado */

for (int i=0; i<Encriptado.length(); i++){

/* se guarda en la variable caracter*/

caracter=Encriptado.charAt(i);

/*Hace el intercambio comprobando*/

if(i-(letra*8)==intercambio1)

caracter=Encriptado.charAt((letra*8)+intercambio2);

if(i-(letra*8)==intercambio2)

caracter=Encriptado.charAt((letra*8)+intercambio1);

if(i-(letra*8)==intercambio3)

caracter=Encriptado.charAt((letra*8)+intercambio4);

if(i-(letra*8)==intercambio4)

caracter=Encriptado.charAt((letra*8)+intercambio3);

/*se guarda en binario la variable encriptado*/

Binario=Binario.concat(Character.toString(caracter));

Page 8: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

8

aux++;

if (aux%8==0){

/*Transformar el codigo de 8 digitos a

caracter*/

codigoASCII=0;

for (int j=0; j<8; j++) if (Binario.charAt(j)=='1')

codigoASCII+=Math.pow(2,(7-j));

caracter=(char)codigoASCII;

Binario="";

letra++;

MensajeDesencriptado=MensajeDesencriptado.concat(Character.to

String(caracter));

if (indexKey<Key.length()){

intercambio1=Character.valueOf(Key.charAt(indexKey))-48;

indexKey++;

intercambio2=Character.valueOf(Key.charAt(indexKey))-48;

indexKey++;

intercambio3=Character.valueOf(Key.charAt(indexKey))-48;

indexKey++;

intercambio4=Character.valueOf(Key.charAt(indexKey))-48;

indexKey++;

}

Page 9: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

9

Tabla de código ASCII

Capturas de pantalla.

Page 10: Practica Encriptacion

Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.

Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales

10

Conclusión

En conclusión podemos decir, que la Criptografía es la ciencia que se

ocupa de la construcción de claves para ocultar mensajes a ojos no autorizados,

con el fin de evitar robo de información.

Lo cual nos lleva a comprender el código realizado y analizar los tipos y

formas de encriptación de mensajes, dándonos cuenta que ninguna forma de

encriptación es impenetrable ya que si se cuenta con los conocimientos

necesarios se puede lograr desencriptar el mensaje.

Como comentarios personales fue muy gratificante realizar esta práctica,

ya que aumentamos nuestros conocimientos sobre la criptografía.