post icon

Encriptar / Desencriptar Texto en S-DES con Java

Ya habíamos visto anteriormente como encriptar ficheros con Java en AES-256, el caso de hoy será semejante, a diferencia que no encriptará ficheros completos, sino texto plano. El ejemplo es sencillo de utilizar, necesitamos la palabra a encriptar, la llave, que es una palabra secreta definida por nosotros, cuanto mas compleja ésta, más difícil violar el encriptado a fuerza bruta, les recomiendo que tenga una extensión de 16 o 32 caracteres, y un booleano que sirve para determinar la operación a realizar, y encriptar o desencriptar.

Este código se tiene que tener cuidado para utilizarlo, ya que si lo encriptado se hizo en un sistema de codificación y el desencriptado en otro, no funcionará, ejemplo: Windows utiliza ASCII para éste efecto y GNU/Linux Unicode, así que lo que fue encriptado en Windows no se podrá desencriptar en GNU/Linux. Utilícenlo únicamente si siempre será en el mismo Sistema Operativo o si cambian los sistemas de codificación por defecto de los mismos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package comunes;
 
/**
 * Algoritmo de Encripatado S-DES
 */
public class EncriptCadena {
    public String retorno = "";
 
    public String EncriptDecryptCadena(String c, String t, boolean a) {
        int i = 0, j = 0, ic = c.length(), it = t.length();
        int temp;
        int[] claveascii = new int[ic];
        int[] textoascii = new int[it];
        for (i = 0; i < ic; i++)
            claveascii[i] = c.charAt(i);
 
        for (i = 0; i < it; i++)
            textoascii[i] = t.charAt(i);
 
        if (a) {
            for (i = 0; i < it; i++) {
                j++;
                if (j >= ic)
                        j = 0;
                temp = textoascii[i] + claveascii[j];
                if (temp > 255)
                        temp = temp - 255;
                retorno = retorno + (char) temp;
            }//end for
        } else {
            for (i = 0; i < it; i++) {
                j++;
                if (j >= ic)
                    j = 0;
                temp = textoascii[i] - claveascii[j];
 
                if (temp < 0)
                    temp = temp + 256;
                retorno = retorno + (char) temp;
            }//end for
        }//end if
        return retorno;
    }//end EncriptDecryptCadena
}//end class
12 febrero 2010

Comentarios desde Facebook:

  1. avatar
    Your Name PERU Mozilla Firefox Windows
    18 abril 2012 at 19:54 #

    wtf did I just read?

Responder