Login Criptografado usando Base 64 (J2ME)

Olá pessoal,
Queria saber se tem jeito de eu criptografar ou descriptografar usando base64 no J2ME ?

Pq fiz uma aplicação p/ celular com acesso a web. Só que o cliente presisa logar no sistema e o campo de senha no servidor web é criptografado usando base64.

No java p/ Desktop eu consigo, tentei fazer semelhante mas dá erro de import.
Alguém tem algum modelo(exemplo) aí ?

[quote=Helder Ribeiro]Olá pessoal,
Queria saber se tem jeito de eu criptografar ou descriptografar usando base64 no J2ME ?

Pq fiz uma aplicação p/ celular com acesso a web. Só que o cliente presisa logar no sistema e o campo de senha no servidor web é criptografado usando base64.

No java p/ Desktop eu consigo, tentei fazer semelhante mas dá erro de import.
Alguém tem algum modelo(exemplo) aí ?[/quote]

Base64 não é criptografia, mas sim uma codificação de dados para transferência na internet. Qualquer um consegue ler o conteúdo de uma mensagem dessas. Se você quer criptografia, pode usar a biblioteca do BouncyCastle. Entretanto, você pode usar essa classe para resolver o seu problema, lembrando que o método recebe em bytes e retorna em String:

public class ConverteBase64 {

private static        char[]  map1         = new char[64];
   static {
      int  i  = 0;
      for ( char c = 'A'; c <= 'Z'; c++ ) {
         map1[i++] = c;
      }
      for ( char c = 'a'; c <= 'z'; c++ ) {
         map1[i++] = c;
      }
      for ( char c = '0'; c <= '9'; c++ ) {
         map1[i++] = c;
      }
      map1[i++] = '+';
      map1[i++] = '/';
   }

   public static String base64Encode( byte[] in ) {
      int     iLen      = in.length;
      int     oDataLen  = ( iLen * 4 + 2 ) / 3;// output length without padding
      int     oLen      = ( ( iLen + 2 ) / 3 ) * 4;// output length including padding
      char[]  out       = new char[oLen];
      int     ip        = 0;
      int     op        = 0;
      int     i0;
      int     i1;
      int     i2;
      int     o0;
      int     o1;
      int     o2;
      int     o3;
      while ( ip < iLen ) {
         i0 = in[ip++] & 0xff;
         i1 = ip < iLen ? in[ip++] & 0xff : 0;
         i2 = ip < iLen ? in[ip++] & 0xff : 0;
         o0 = i0 >>> 2;
         o1 = ( ( i0 & 3 ) << 4 ) | ( i1 >>> 4 );
         o2 = ( ( i1 & 0xf ) << 2 ) | ( i2 >>> 6 );
         o3 = i2 & 0x3F;
         out[op++] = map1[o0];
         out[op++] = map1[o1];
         out[op] = op < oDataLen ? map1[o2] : '=';
         op++;
         out[op] = op < oDataLen ? map1[o3] : '=';
         op++;
      }
      return new String( out );
   }

}