Java - programa para encriptar y desencriptar contraseñas

 
Vista:
sin imagen de perfil

programa para encriptar y desencriptar contraseñas

Publicado por juan (2 intervenciones) el 01/05/2014 20:56:23
Buenas tardes!!
tengo un programa que no puedo resolver, se trata de encriptar y desencriptar contraseñas.
el codigo es el siguiente.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package md5;
 
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import java.security.NoSuchAlgorithmException;
import javax.swing.*;
import java.security.MessageDigest;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
 
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 *
 * @author linux
 */
public class Md5 {
 
 
 
    public String get_md5(String CadenaOriginal){
 
 
        String md5="";
 
        try {
            if (!CadenaOriginal.equalsIgnoreCase("")) {
 
                MessageDigest md = MessageDigest.getInstance("MD5");
                md.reset();
                md.update(CadenaOriginal.getBytes());
                byte bytes[] = md.digest();
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < bytes.length; i++) {
                    String hex = Integer.toHexString(0xff & bytes[i]);
                    if (hex.length() == 1) {
                        sb.append('0');
                    }
                    sb.append(hex);
                }
 
                md5 = sb.toString();
            }
        } catch (NoSuchAlgorithmException e) {
            md5 = "Error inesperado";
 
        }
        return md5;
 
    }
 
 
 public static void main(String args[]) {
        Md5 obj = new Md5();
 
        try {
            JOptionPane.showMessageDialog(null, "La palbra encriptada es:  "+obj.get_md5("Hola"));
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
 
    }
 
}
------------------------------------------------------------------------------------------------------------------------------------------------------------


yo trate de resolverlo asi, pero me lanza un error en una linea de codigo.
esto es lo que trate de hacer es el programa completo y mi problema es en el metodo de desencriptar. Lo que esta subrayado es donde me marca el error. epero alguien pueda ayudarme. saludos

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package md5;
 
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import java.security.NoSuchAlgorithmException;
import javax.swing.*;
import java.security.MessageDigest;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
 
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 *
 * @author linux
 */
public class Md5 {
 
 
 
    public String get_md5(String CadenaOriginal){
 
 
        String md5="";
 
        try {
            if (!CadenaOriginal.equalsIgnoreCase("")) {
 
                MessageDigest md = MessageDigest.getInstance("MD5");
                md.reset();
                md.update(CadenaOriginal.getBytes());
                byte bytes[] = md.digest();
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < bytes.length; i++) {
                    String hex = Integer.toHexString(0xff & bytes[i]);
                    if (hex.length() == 1) {
                        sb.append('0');
                    }
                    sb.append(hex);
                }
 
                md5 = sb.toString();
            }
        } catch (NoSuchAlgorithmException e) {
            md5 = "Error inesperado";
 
        }
        return md5;
 
    }
 
    public static String Desencriptar(String textoEncriptado) throws Exception {
 
        String secretKey = "qualityinfosolutions"; //llave para desenciptar datos  
        String md5 = "";
 
        try {
            byte[] message = Base64.decode(md5.getBytes("utf-8"));
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] digestOfPassword = md.digest(secretKey.getBytes("utf-8"));
            byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
            SecretKey key = new SecretKeySpec(keyBytes, "DESede");
 
            Cipher decipher = Cipher.getInstance("DESede");
            decipher.init(Cipher.DECRYPT_MODE, key);
 
            byte[] plainText = decipher.doFinal(message);
 
            md5 = new String(plainText, "UTF-8");
 
        } catch (Exception ex) {
        }
        return md5;
}
 public static void main(String args[]) {
        Md5 obj = new Md5();
 
        try {
            JOptionPane.showMessageDialog(null, "La palbra encriptada es:  "+obj.get_md5("Hola"));
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
 
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

programa para encriptar y desencriptar contraseñas

Publicado por Mario (26 intervenciones) el 02/05/2014 03:20:01
MD5 es un algoritmo de encriptación asimétrico, no hay un proceso inverso para obtener los datos encriptados, intenta con otro tipo de algoritmo que sea simétrico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

programa para encriptar y desencriptar contraseñas

Publicado por juan (2 intervenciones) el 02/05/2014 05:44:50
Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar