Encriptacion por metodo XOR

Encriptacion XOR


Dentro de los tantos algortimos de encriptacion que existen esta el XOR , en realidad este no es tanto un algoritmo sino una sustitucion , este metodo se podria decir que es de sustitucion polialfabetica, porque se intercambian una a una las letras del texto plano con las letras de la clave aplicandoles la operacion XOR.

Bueno y a todo esto podemos preguntar que es la operacion XOR tanto mencionada; esta es una operacion que se realiza a nivel binario , XOR viene de la palabra en ingles: "Exclusive OR" .
En espaniol tambien se le llama : ExOR , (or exclusiva).

Estas operaciones son operaciones binarias a niveles de bits si se quiere profundizar mas en el tema se puede consultar en la wikipedia por las compuertas binarias.

Explicando el metodo del XOR

El metodo se realiza de la siguiente forma:
Como se hace a nivel de bits se cuenta con la siguiente tabla

Entrada A Entrada B Salida A \oplus B
0
0
0
0
1
1
1
0
1
1
1
0
Tabla extraida de la wikipedia


Tenemos una palabra que queremos cifrar :

BACK

Tenemos una clave alfanumerica:

DOOR
Para poder comparar estas dos palabras se tienen que convertir a su equivalente en Ascii binario para realizar las operaciones:


B=0100001
A=1000001
C=1100001
K=1101001

D=0010001
O=1111001
O=1111001
R=0100101

Una vez que se realiza el cambio se efectua la operacion XOR:

0100001 1000001 1100001 1101001
0010001 1111001 1111001 0100101
-------------- -------------- -------------- ---------------
0110000 0111000 0011000 1001100
-------------- -------------- -------------- --------------
45 56 24 76

Se hace el primer caracter del texto plano con el primer caracter de la clave , el segundo del texto plano con el segundo caracter de la clave y asi sucesivamente si se acaba los caracteres de la clave se empieza de nuevo con el primero.

Lo que hice en el ejemplo de arriba fue hacer la operacion XOR en binario y el resultado volverlo nuevamente a decimal.
El resultado de nuestro texto cifrado seria:

- 8 (CAN) L

La palabra CAN es el simbolo de cancel entonces lo mas seguro les saldra (si lo implementan en una computadora) un cuadrado pequenio.

Bueno eso es todo espero que les sirva mas adelante la implementacion en java de este metodo.

Nota: no implementen este metodo solo para cifrar algo ya que es muy facil de descifrar para los que manejan estos algoritmos.
el proceso de descifrado es poner el texto cifrado y la clave y realizar el mismo proceso del cifrado.

Codigo Cesar Java

Codigo cesar Explicacion

public class CifradoDescifrado {

/** Creates a new instance of CifradoDescifrado */
public static BufferedReader entrada = new BufferedReader (new InputStreamReader (System.in));

public static void main(String[] args)throws IOException {

CesarCod();

}
public static void CesarCod()throws IOException{

char [] palabraV = {'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'};
String palabraN="";
int clave=0;

System.out.println("Digite la palabra que desea cifrar: ");
String palabra = entrada.readLine();
palabra = palabra.toLowerCase();
System.out.println("Digite la clave para codificar entre 1 y 24): ");
clave = Integer.parseInt(entrada.readLine());

if(clave > 0){

for (int i=0;i < j="0;j">= 26){
int temp = j+clave;
int tmp = temp-26;
palabraN = palabraN.concat(""+palabraV[tmp]);
}else{
palabraN = palabraN.concat(""+palabraV[j+clave]);
}
}

}

}

}else{
System.out.println("Digite un numero correcto de clave");
CesarCod();
}

palabra = palabra.trim();
System.out.println("Su palabra cifrada es: "+palabraN);

}

}

Espero que les sirva, este es solo la codificacion , mas adelante explicare como decodificarlo.

Mas informacion e historia aqui
.

Saludos : )

-Codigo cesar , cifrado cesar-


Bueno aqui les voy a explicar como funciona este cifrado para ir adentrandonos en la criptografia.



Cifrado César

Utilizado, de ahí su nombre, por Julio César para comunicarse con sus
oficiales, consiste en sustituir cada letra del mensaje por la que está n
posiciones más adelante o atrás en el alfabeto.

Si n = 3, la A se sustituiría por la D, la Bpor E, la C por la F y así sucesivamente. De este modo, la palabra puerta se transforma en SXHUD.

En los sistemas de encriptación se suele distinguir entre el algoritmo o procedimiento general y la clave, que sirve para singularizar el resultado del algoritmo.

En el caso del cifrado César, el algoritmo sería la regla por la cuál cambiamos cada carácter por uno que está n posiciones más adelante, mientras que la clave sería el valor concreto utilizado para n.

Lo malo de este sistema es que, si se sabe que se está utilizando, solo permite 27 sustituciones distintas (tantas como letras tiene el alfabeto), con lo que su descifrado es trivial. Para complicar un poco la cosa se puede utilizar, en vez de una cifra, dos, o más. Así, si la clave es 31, se sustituirá la primera letra por la que esté tres posiciones por delante, la segunda por la que esté una posición más avanzada, la tercera por la que esté tres posiciones por delante, y así sucesivamente.

Como vemos es una forma de irnos adentrando en esto, este es el mas sencillo de todos los cifrados pero es como para acostumbrarnos a lo que viene, este codigo se le puede comparar en sencillez como a un HOLA MUNDO de cualquier lenguaje de programacion, mas adelante mas metodos clasicos de encriptacion.

Aqui les dejo la implementacion en java del cifrado cesar
Codigo <<<---- >>> Ejecutable Cesar.jar

Fuente: http://www.epsilones.com/paginas/t-historias1.html

Criptografia





Definicion


Es el arte o ciencia de cifrar y descifrar información utilizando técnicas que hagan posible el intercambio de mensajes de manera segura que sólo puedan ser leídos por las personas a quienes van dirigidos.

Con más precisión, cuando se habla de esta área de conocimiento como ciencia se debería hablar de criptología, que engloba tanto las técnicas de cifrado, la criptografía propiamente dicha, como sus técnicas complementarias: el criptoanálisis, que estudia los métodos que se utilizan para romper textos cifrados con objeto de recuperar la información original en ausencia de la clave.

Objetivo


La finalidad de la criptografía es, en primer lugar, garantizar el secreto en la comunicación entre dos entidades (personas, organizaciones, etc.) y, en segundo lugar, asegurar que la información que se envía es auténtica en un doble sentido: que el remitente sea realmente quien dice ser y que el contenido del mensaje enviado, habitualmente denominado criptograma, no haya sido modificado en su tránsito.

Definiciones importantes

Texto en claro
: la información original que debe protegerse.

Cifrado
: es el proceso de convertir el texto plano en un galimatías ilegible, denominado texto cifrado o criptograma.

Clave: información secreta que adapta el algoritmo de cifrado para cada uso distinto.

Ataque:es el intento de descifrar un criptograma. Se aplica al proceso de someter el texto enigmático a procesos que revelen lo que oculta, más que a los esfuerzos por averiguar una clave, por ejemplo interceptando mensajes que pueden revelarla.

Algoritmo:viene del árabe al-Jwarizmi, sobrenombre del célebre matemático Mohámed ben Musa (también proviene de él la palabra guarismo, "cifra árabe").
Es un procedimiento matemático o lógico para lograr un fin determinado (no sólo en criptografía). Los algoritmos de cifrado, por ejemplo, tienen como entrada los datos del texto claro, un procedimiento que utiliza la clave que se va a utilizar, y una salida que es el texto enigmático.

Hay muchos algoritmos posibles para el cifrado (e incluso combinaciones de algoritmos), y su implementación tiene gran importancia comercial y política.

Fuerza bruta: es uno de los procedimientos de criptoanálisis. Se trata de aplicar a un mensaje cifrado todas las claves posibles, hasta encontrar la que sirvió para cifrarlo. No es un procedimiento muy elegante (como el propio nombre insinúa), pero puede rendir buenos servicios.
Teóricamente puede no haber mensajes abolutamente blindados, sino tan sólo tiempos excesivos de trabajo para su descifrado. Si un determinado algoritmo exigiera cincuenta años de trabajo al más potente ordenador existente, haríamos bien en considerarle inexpugnable. Como la velocidad de procesamiento va en constante aumento, y los algoritmos de cifrado se refinan cada vez más, se puede decir que ésta es una carrera sin final.



Fuentes:
http://es.wikipedia.org/wiki/Criptografía
http://jamillan.com/v_cripto2.htm