Download - 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
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.
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
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);
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);
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++;
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));
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++;
}
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.
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.