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.