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 );
}
}