Bouncy Castle Crypto (RC4) - Java ME.

1. Bouncy Castle Crypto (RC4) - Java ME.

Danilo Roberto Floriano
dafloria

(usa Ubuntu)

Enviado em 30/10/2012 - 15:17h

Boa tarde a todos.

Estou tendo um sério problema com meu TCC. A ideia é desenvolver um software JME para envio e recebimento de SMS com criptografia.
A Criptografia escolhida foi o RC4 por não alterar o tamanho das mensagens, que nos SMS são limitadas em 160 caracteres, e para sua implementação estou utilizando a biblioteca Bouncy Castle.

Testei a a criptografia em uma classe java normal, e rodou perfeitamente. Mas ao tentar utilizá-la em uma MIDlet não roda de jeito nenhum.

Segue o erro ocorrido:
Error preverifying class org.bouncycastle.asn1.ASN1InputStream
java/lang/NoClassDefFoundError: java/io/FilterInputStream
C:\Users\danilo\Documents\NetBeansProjects\MobileApplication5\nbproject\build-impl.xml:483: Preverification failed with error code 1.
FALHA NA CONSTRUÇÃO (tempo total: 26 segundos)

Segue o código testado:
import java.io.UnsupportedEncodingException;
import javax.microedition.midlet.MIDlet;
import org.bouncycastle.crypto.StreamCipher;
import org.bouncycastle.crypto.engines.RC4Engine;
import org.bouncycastle.crypto.params.KeyParameter;

public class RC4 extends MIDlet {

public static String texto1 = "Danilo Roberto Floriano";
private static byte[] keyBytes = {'D', 'a', 'n', 'i', 'l', 'o', '!', '?'};

static byte[] encrypt(byte[] cleartext) throws UnsupportedEncodingException {

// Criptografar
StreamCipher rc4 = new RC4Engine();
KeyParameter keyParam = new KeyParameter(keyBytes);
rc4.init(true, keyParam);
byte[] ciphertext = new byte[cleartext.length];
rc4.processBytes(cleartext, 0, cleartext.length, ciphertext, 0);

return ciphertext;
}

public void startApp() {
try {
String key = new String(keyBytes, "utf-8");
System.out.println("Chave: " + key);
byte[] cleartext1 = texto1.getBytes("utf-8");
byte[] ciphertext1 = encrypt(cleartext1);

String T1 = new String(cleartext1, "utf-8");
String T2 = new String(ciphertext1, "utf-8");
System.out.println("Texto limpo: " + T1);
System.out.println("Texto cifrado: " + T2);
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}

}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}

Aparentemente o JME não está suportando a biblioteca Bouncy Castle. Mas qualquer ajuda é bem vinda.
Ou me indicando uma forma de utilizá-la com o JME ou outra biblioteca que seja compatível com o mesmo.

Desde já agradeço a todos.



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts