Encriptacion de Cadenas XOR en JAVA

Iniciado por ‭‭‭‭jackl007, 5 Febrero 2009, 07:18 AM

0 Miembros y 1 Visitante están viendo este tema.

‭‭‭‭jackl007

Hola, aqui les pongo una traduccion que hice de un codigo VB a java...

El codigo sirve para cifrar cadenas usando XOR ...

ando muy acostumbrado a programar en VB; asi que para no perder el control y confusion ideo mis codigos con funciones
tipicas del VB: mid, rigth, reverse.... a las cuales simulo... (es por comodidad)

aqui les dejo los dos metodos principales (cifra y descifra); los otros metodos son lo que les decia (semejantes al VB)

Código (java) [Seleccionar]

import java.net.*;
import java.io.*;
public class XorCoder
{
public static String cifra(String Pass, String clave){
String Codigo, CAR;
int i;
//String clave = new String("%ü&/@#$A");
String Pass2 = new String("");
char codigo[],car[];
for(i=1;i<= Pass.length();i++){
    CAR = Mid(Pass,i, 1);
car= CAR.toCharArray();
Codigo = Mid(clave, ((i - 1) % clave.length()) + 1, 1);
codigo= Codigo.toCharArray();
Pass2 = Pass2 + Right("0" + Integer.toHexString((int)codigo[0] ^ (int)car[0]), 2);

}

       return Pass2;
}
public static String descifra(String Pass,String clave){
String Codigo, CAR;
int i,j=1;
//String clave = new String("%ü&/@#$A");
String Pass2 = new String("");
char codigo[],car[],hex[];
for(i=1;i<= Pass.length();i=i+2){
CAR =Mid(Pass, i, 2);
car= CAR.toCharArray();
Codigo = Mid(clave, ((j - 1) % clave.length()) + 1, 1);
codigo= Codigo.toCharArray();
Pass2 = Pass2 + (char)((int)codigo[0] ^ Integer.parseInt(CAR, 16));
j++;
}
return Pass2;
}

public static String Mid(String cad,int a, int b){
cad = cad.substring(a-1,a + b -1);
return cad;
}

public static String Right(String cad,int a){

        cad = reverse(cad);
cad = cad.substring(0,a);
        cad = reverse(cad);
        return cad;
}

public static String reverse(String source) {
        int i, len = source.length();
        StringBuffer dest = new StringBuffer(len);

        for (i = (len - 1); i >= 0; i--) {
            dest.append(source.charAt(i));
        }
        return dest.toString();
    }

}



lo pueden usar asi:
XorCoder.cifra("jackl007","%ü&/@#$A");
XorCoder.descifra("4f9d45442c131476","%ü&/@#$A");   // el segundo parametro es una clave de encriptacion; por lo cual
siempre podriamos cifrar de una manera distinta; eso me gusta

PD: el autor del algoritmo no recuerdo ahora, pero fue escrito originalmente en VB

Ragnarok

no deberías programar visual basic en java. Java tiene sus propios métodos para hacer esas cosas y el código te quedará más limpio y eficiente, aparte de que aprenderás java.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones