Está en la página 1de 10

Direccin General de Educacin Superior Tecnolgica

Instituto Tecnolgico de Minatitln.

Instituto Tecnolgico de Minatitln


Ingeniera en Sistemas Computacionales

Prctica de Seguridad En Redes

Nombre de la Practica: Encriptacin ASCII

03 de Enero del 2015

Reporte No. 1

Integrantes
Dianeth Guadalupe Reyna Armas
Emmanuel Arenas Aquino

Instituto Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

Objetivo general: Realizar un mtodo de encriptacin por medio de un lenguaje de


programacin.

Material
1 Computadora porttil
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 Terico.

ASCII

ASCII (American Standard Code for Information Interchange Cdigo


Estndar Estadounidense para el Intercambio de Informacin), pronunciado
generalmente ski o sci, es un cdigo de caracteres basado en el alfabeto
latino, tal como se usa en ingls moderno.
El cdigo 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 transmisin.
En la actualidad define cdigos para 32 caracteres no imprimibles, de los
cuales la mayora son caracteres de control que tienen efecto sobre cmo se
procesa el texto, ms otros 95 caracteres imprimibles que les siguen en la
numeracin (empezando por el carcter espacio).
Casi todos los sistemas informticos actuales utilizan el cdigo ASCII o una
extensin 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
lingstica o significado, de tal forma que sea incomprensible o, al menos, difcil 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
(criptografa simtrica) o no (criptografa asimtrica).
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 Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

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


necesario complementarlo con otras tcnicas criptogrficas para poder
comunicarse
de
manera
segura.
Puede
ser
necesario
garantizar
la integridad la autenticacin de las partes.

Descripcin de la encriptacin.
Dada una cadena de caracteres (mensaje) se selecciona carcter por
carcter y se convierte en cdigo binario, donde saldrn 8 dgitos de 0s y 1s,
para despus de manera aleatoria de esos 8 nmeros abra dos parejas de
nmeros que se cambiaran entre s, por lo tanto 4 dgitos de los 8 de cada letra no
se encuentran en sus posiciones originales, las parejas de dgitos se irn
guardando en una variable String para obtener una key(Clave), donde la key
dir cules son las posiciones de cada letra que se cambiarn, para poder
desencriptarlo.

Desarrollo de la prctica.
Encriptacin
Mensaje a cdigo ASCII
//Se avanza letra a letra el mensaje que se aya introducido
for (int i=0; i<mensaje.length(); i++){
//Captar el carcter desde la primera letra del mensaje
caracter=mensaje.charAt(i);
//guardamos en la variable codigoASCII
codigoASCII=caracter;
/* Para verificar si
imprimiendo un mensaje*/

se

est

realizando

correctamente

verificamos

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

Cdigo ASCII a Cdigo 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 Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

cdigo ASCII ocupa 8 dgitos*/


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
imprimiendo un mensaje*/

realizando

correctamente

verificamos

System.out.println(binario);

/*Se alternan dos parejas de caracteres.Se generan


nmeros 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 Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

Se encripta el Cdigo Binario


/*Se toma el cdigo 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 nmero 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);

Instituto Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

/*Aadimo 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));
}

Desencriptacin

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 Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

/*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));

Instituto Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

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++;
8

Instituto Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

Tabla de cdigo ASCII

Capturas de pantalla.

Instituto Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de Minatitln.

Conclusin
En conclusin podemos decir, que la Criptografa es la ciencia que se
ocupa de la construccin de claves para ocultar mensajes a ojos no autorizados,
con el fin de evitar robo de informacin.
Lo cual nos lleva a comprender el cdigo realizado y analizar los tipos y
formas de encriptacin de mensajes, dndonos cuenta que ninguna forma de
encriptacin 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 prctica,
ya que aumentamos nuestros conocimientos sobre la criptografa.
10

Instituto Tecnolgico de Minatitln | Ingeniera en Sistemas Computacionales