elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [PROBLEMA] Descifrado con algoritmo TripleDES en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [PROBLEMA] Descifrado con algoritmo TripleDES en java  (Leído 2,216 veces)
kondrag_X1

Desconectado Desconectado

Mensajes: 157


Ver Perfil
[PROBLEMA] Descifrado con algoritmo TripleDES en java
« en: 25 Abril 2013, 13:45 pm »

Hola buenas, mirad tengo un pequeño problema tratando de hacer una clase del algoritmo de cifrado tripleDES

Adjunto código:
Código:
package algoritmos;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;

public class TripleDES extends Algoritmo {
private String msg;
private byte [] msgCifrado;
private byte [] msgDescifrado;
private Cipher cifrador;
private Cipher descifrador;
private KeyGenerator keyGen;
private SecretKey claveTripleDES;

public TripleDES (String nombreAlgortimo, String mensaje){
this.nombreAlgortimo = nombreAlgortimo;
this.msg = mensaje;
this.isCreate = true;
try {

System.out.println(">> Creando TripleDES......");
generarKey();
cifrador = Cipher.getInstance(nombreAlgortimo+"/CBC/PKCS5Padding");
descifrador = Cipher.getInstance(nombreAlgortimo+"/CBC/PKCS5Padding");

} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("--------------- Generamos Clave ---------------");
System.out.println("Clave pública: "+ new String(claveTripleDES.getEncoded()));
System.out.println("------------------------------------------------");
}
@Override
public void cifrar() {
byte [] bytesMensaje = msg.getBytes();
try {
cifrador.init(Cipher.ENCRYPT_MODE, claveTripleDES);
msgCifrado = cifrador.doFinal(bytesMensaje);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e){
e.printStackTrace();
}
System.out.println("--------------- TEXTO CIFRADO ---------------");
System.out.println("CLAVE Pública: " + new String(claveTripleDES.getEncoded()) + "\n");
System.out.println("Texto sin cifrar: "+msg);
        System.out.println("Texto cifrado : "+new String(msgCifrado));
        System.out.println("---------------------------------------------"); 
}

@Override
public void descifrar() {
try {
descifrador.init(Cipher.DECRYPT_MODE, claveTripleDES);
msgDescifrado = descifrador.doFinal(msgCifrado);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
msgDescifrado = "error mensaje no descifrado".getBytes();
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("--------------- TEXTO DESCIFRADO ---------------");
System.out.println("CLAVE Pública: " + new String(claveTripleDES.getEncoded()) + "\n");
System.out.println("Texto sin cifrar: "+msg);
System.out.println("Texto cifrado: "+new String(msgCifrado));
        System.out.println("Texto descifrado: "+new String(msgDescifrado));
        System.out.println("---------------------------------------------");
}

private void generarKey() throws NoSuchAlgorithmException{
        keyGen = KeyGenerator.getInstance(nombreAlgortimo);
        claveTripleDES = keyGen.generateKey();
}
}

y el problema es que cuando genero la clave y cifro todo va bien es cuando intento descifrar me sale el siguiente error. Ya se me han acabado las ideas. ¿ Alguien ha pasado por este problema o se le ocurre como solucionarlo?

adjunto código de la incidencia.
Citar
04-25 11:33:21.700: W/System.err(742): java.security.InvalidKeyException: no IV set when one expected
04-25 11:33:21.710: W/System.err(742):    at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineInit(BaseBlockCipher.java:629)
04-25 11:33:21.720: W/System.err(742):    at javax.crypto.Cipher.init(Cipher.java:519)
04-25 11:33:21.720: W/System.err(742):    at javax.crypto.Cipher.init(Cipher.java:479)
04-25 11:33:21.720: W/System.err(742):    at algoritmos.TripleDES.descifrar(TripleDES.java:72)
04-25 11:33:21.730: W/System.err(742):    at com.AlarconMendez.cripto.MainActivity$1.onClick(MainActivity.java:43)
04-25 11:33:21.730: W/System.err(742):    at android.view.View.performClick(View.java:4204)
04-25 11:33:21.740: W/System.err(742):    at android.view.View$PerformClick.run(View.java:17355)
04-25 11:33:21.740: W/System.err(742):    at android.os.Handler.handleCallback(Handler.java:725)
04-25 11:33:21.740: W/System.err(742):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-25 11:33:21.740: W/System.err(742):    at android.os.Looper.loop(Looper.java:137)
04-25 11:33:21.750: W/System.err(742):    at android.app.ActivityThread.main(ActivityThread.java:5041)
04-25 11:33:21.750: W/System.err(742):    at java.lang.reflect.Method.invokeNative(Native Method)
04-25 11:33:21.750: W/System.err(742):    at java.lang.reflect.Method.invoke(Method.java:511)
04-25 11:33:21.760: W/System.err(742):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-25 11:33:21.760: W/System.err(742):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-25 11:33:21.760: W/System.err(742):    at dalvik.system.NativeStart.main(Native Method)



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Algoritmo en Java [SOLUCIONADO]
Java
Azulf 3 9,520 Último mensaje 21 Octubre 2007, 15:25 pm
por marioly
este algoritmo es correcto en java??
Java
l9_in 5 4,841 Último mensaje 16 Junio 2011, 09:13 am
por Debci
necesito por favor que me ayuden con el algoritmo en JAVA ECLIPSE indigo
Java
georgesf13 5 5,567 Último mensaje 2 Noviembre 2011, 05:00 am
por bengy
Ayuda algoritmo en java
Java
estherlui 0 1,646 Último mensaje 27 Mayo 2012, 13:13 pm
por estherlui
Ayuda algoritmo en java
Java
estherlui 1 3,514 Último mensaje 27 Mayo 2012, 23:05 pm
por Proteus1989
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines