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
Práctica de Seguridad En Redes
Nombre de la Practica: Practica : Encriptación ASCII “
”
03 de Enero del 2015
Reporte No. 1
Integrantes
Dianeth Guadalupe Reyna Armas Emmanuel Arenas Aquino
Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
1
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
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. Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
2
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
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"+ 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 Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
3
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
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==intercambio1);
(intercambio2>7
||
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);
|| || 4
Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
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);
5
Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
/*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++; 6
Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
/*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
7
Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
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
}
Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
Tabla de código ASCII
Capturas de pantalla.
9
Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales
Dirección General de Educación Superior Tecnológica Instituto Tecnológico de Minatitlán.
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. 10
Instituto Tecnológico de Minatitlán | Ingeniería en Sistemas Computacionales