Objeto Criptografado

19 respostas
Z

Salve galera!

Tenho um objeto simples serializavel. Serializo ele, que então vai prum byte[], criptografo isso e minha classe me devolve num char[].
Primeira pergunta: Sempre se criptografa algo recependo um vetor char??? o metodo da classe (q foi o entanglement q me passou, mas era pra outra coisa, e estou reutilizando) mais esmiuçado é esse:

public static char[] encode (byte[] in, int iOff, int iLen) {
   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 = iOff;
   int iEnd = iOff + iLen;
   int op = 0;
   while (ip < iEnd) {
      int i0 = in[ip++] & 0xff;
      int i1 = ip < iEnd ? in[ip++] & 0xff : 0;
      int i2 = ip < iEnd ? in[ip++] & 0xff : 0;
      int o0 = i0 >>> 2;
      int o1 = ((i0 &   3) << 4) | (i1 >>> 4);
      int o2 = ((i1 & 0xf) << 2) | (i2 >>> 6);
      int 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 out; }

Dae transformei meu antigo objeto num char[] e transmito pela rede. Do outro lado tenho um vetor de char, que descriptografo e pego dele o vetor de bytes… mas como faço pra retransformar esse byte[] no meu objeto? Meu objeto tem q implementar algum método para se reconstruir do byte?
Normalmente, se nao estiver criptografado, é só receber o objeto implicitamente pelo inputstream q tá beleza. Mas nesse caso não to conseguindo… alguem dá uma luz ae.

19 Respostas

V

Sim, você deveria implementar um método chamado

SuaClasse decode(byte[] dados);

Se não for criptografia, poderia ser só “read”.

Agora, como fazer a transformação? Basta usar a ordem inversa do que você fez. Para isso, é imprescindível que você entenda exatamente como o método do entanglement está fazendo o processo.

Z

Godoy,

Tenho o método que faz o inverso, consigo recuperar o char[] e o vetor de bytes normal, o q não faço é essa construção a partir de bytes…

com esse metodo q vc me passou eu consigo construí-la com bytes (normal, sem criptografia nem nada), chamando: new Classe(bytes[]);???
mas e o q coloco nesse metodo? só o metodo seco?
valeu ae

E

Vou repassar aquele tal método de criptografia, mas usando bytes em vez de caracteres. Daqui a pouco está na sua mão.

E
package guj;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class ExemploCriptografiaSimples {
    private byte[] salt;
    private PBEKeySpec ks;
    private SecretKey skey;
    private SecretKeyFactory skf;
    private BASE64Decoder dec;
    private BASE64Encoder enc;

    public ExemploCriptografiaSimples() {
        dec = new BASE64Decoder();
        enc = new BASE64Encoder();
    }

    public void senha(char[] chars) throws Exception {
        skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
        salt = new byte[4]; // deixamos 4 bytes zerados :(
        ks = new PBEKeySpec(chars, salt, 100, 128);
        skey = new SecretKeySpec(skf.generateSecret(ks).getEncoded(), "AES");
    }

    public String cifrar(String original) throws Exception {
        Cipher cf = Cipher.getInstance("AES/OFB/NoPadding");
        cf.init(Cipher.ENCRYPT_MODE, skey, new IvParameterSpec(new byte[16]));
        return enc.encode(cf.doFinal(original.getBytes()));
    }

    public byte[] cifrarBytes(byte[] original) throws Exception {
        Cipher cf = Cipher.getInstance("AES/OFB/NoPadding");
        cf.init(Cipher.ENCRYPT_MODE, skey, new IvParameterSpec(new byte[16]));
        return cf.doFinal(original);
    }
    
    public String decifrar(String cifrado) throws Exception {
        Cipher cf = Cipher.getInstance("AES/OFB/NoPadding");
        cf.init(Cipher.DECRYPT_MODE, skey, new IvParameterSpec(new byte[16]));
        return new String(cf.doFinal(dec.decodeBuffer(cifrado)));
    }

    public byte[] decifrarBytes (byte[] bytes) throws Exception {
        Cipher cf = Cipher.getInstance("AES/OFB/NoPadding");
        cf.init(Cipher.DECRYPT_MODE, skey, new IvParameterSpec(new byte[16]));
        return cf.doFinal(bytes);
    }
    

    private static byte[] serializar (Object obj) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream (baos);
        oos.writeObject(obj);
        oos.close();
        return baos.toByteArray();
    }
    private static Object desserializar (byte[] bytes) throws IOException, ClassNotFoundException {
        Object obj;
        ByteArrayInputStream bais = new ByteArrayInputStream (bytes);
        ObjectInputStream ois = new ObjectInputStream (bais);
        obj = ois.readObject();
        ois.close();
        return obj;
    }
    
    public static void main(String[] args) throws Exception {
        ExemploCriptografiaSimples ecs = new ExemploCriptografiaSimples();
        ecs.senha("YjMIzg+3dhgc7a3EPoH/OA==".toCharArray());
        String s = ecs.cifrar("10/11/2010 - 18:06:45 - Local 3A - Profissional 2r");
        // Esperado: "6A63+uTkapyT8h9GNvYaklLyfIVUCxrCZ+7zIE9XRbJyt6f4i7jBs/13JvsLPNSHpm8="
        System.out.println(s);
        String t = ecs.decifrar(s);
        System.out.println(t);
        // Agora serializando uma lista de objetos.
        System.out.println ("Efetuando a serialização e desserialização");
        List<Object> list = new ArrayList<Object>();
        list.add (Integer.valueOf (12345678));
        list.add (Boolean.TRUE);
        list.add ("abacaxi");
        list.add (Math.PI);
        System.out.println ("Lista Original: " + list);
        BASE64Encoder enc = new BASE64Encoder (); 
        byte[] original = serializar(list);
        System.out.println ("Base-64 (original ): \n" + enc.encode (original));
        byte[] cifrado = ecs.cifrarBytes (original);
        System.out.println ("Base-64 (cifrado  ): \n" + enc.encode (cifrado));
        byte[] decifrado = ecs.decifrarBytes (cifrado);
        System.out.println ("Base-64 (decifrado): \n" + enc.encode (decifrado));
        System.out.println ("Original = Cifrado? " + Arrays.equals (original, decifrado));
        List<Object> listaDecifrada = (List<Object>) desserializar (decifrado);
        System.out.println ("Lista Decifrada: " + listaDecifrada);
    }

}
E

Atenção: por causa da serialização, os resultados podem ser um pouco diferentes.

6A63+uTkapyT8h9GNvYaklLyfIVUCxrCZ+7zIE9XRbJyt6f4i7jBs/13JvsLPNSHpm8=
10/11/2010 - 18:06:45 - Local 3A - Profissional 2r
Efetuando a serialização e desserialização
Lista Original: [12345678, true, abacaxi, 3.141592653589793]
Base-64 (original ): 
rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAEdwQAAAAK
c3IAEWphdmEubGFuZy5JbnRlZ2VyEuKgpPeBhzgCAAFJAAV2YWx1ZXhyABBqYXZhLmxhbmcuTnVt
YmVyhqyVHQuU4IsCAAB4cAC8YU5zcgARamF2YS5sYW5nLkJvb2xlYW7NIHKA1Zz67gIAAVoABXZh
bHVleHABdAAHYWJhY2F4aXNyABBqYXZhLmxhbmcuRG91YmxlgLPCSilr+wQCAAFEAAV2YWx1ZXhx
AH4AA0AJIftURC0YeA==
Base-64 (cifrado  ): 
ddOYzqa5WL/Io0kKOLJWwQ7qB8MTSk6uQvLkOaKla2qV+xqr+dbu2op3Ju4AJcinlB08R3zmZFmz
HAP0iSvKTADM5eql9MT4t+4Bj+X+4jwGEy9Xy/ac4h9533kJ4DinEM22ooZ3joio3zVCyY2xszYc
bgDy0JOJHI9hDCXh/ew4C3anRxmXyd702+mRMHz0+kkAL1Z20hCPx/hSW4b8CkNbggFlghRaNqls
wOeSmkQ/Kn8WwfWFjGkP540PXeW9Vscvu8QWKGLHlidxS2Dw7bw5jNOe+MOtHQ7HNxY/GyyDgw4f
FmLJJmgIU71fSpg9EQ==
Base-64 (decifrado): 
rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAEdwQAAAAK
c3IAEWphdmEubGFuZy5JbnRlZ2VyEuKgpPeBhzgCAAFJAAV2YWx1ZXhyABBqYXZhLmxhbmcuTnVt
YmVyhqyVHQuU4IsCAAB4cAC8YU5zcgARamF2YS5sYW5nLkJvb2xlYW7NIHKA1Zz67gIAAVoABXZh
bHVleHABdAAHYWJhY2F4aXNyABBqYXZhLmxhbmcuRG91YmxlgLPCSilr+wQCAAFEAAV2YWx1ZXhx
AH4AA0AJIftURC0YeA==
Original = Cifrado? true
Lista Decifrada: [12345678, true, abacaxi, 3.141592653589793]
Z

to devendo uma breja! heheheheheeh
to testando aki, q erro é esse? java.security.NoSuchAlgorithmException: PBKDF2WithHmacSHA1 SecretKeyFactory not available
to usando a mesma chave q vc passou…

E

Pode ser que você esteja usando o Java 5 em vez do 6. Nesse caso, use: PBEWithMD5AndTripleDES ou PBEWithSHA1AndDESede

Z

mesmo erro com as duas… java 6, até conferi… caramba…

Exception in thread main java.security.NoSuchAlgorithmException: PBEWithSHA1AndDESede SecretKeyFactory not available

at javax.crypto.SecretKeyFactory.(DashoA13*)

at javax.crypto.SecretKeyFactory.getInstance(DashoA13*)

at comuns.Cripto.senha(Cripto.java:39)

at comuns.Cripto.main(Cripto.java:94)
Z

onde baixo essas bibliotecas?

E

Vixe, então vai com “PBEWithMD5AndDES”. Se nem assim funcionar…

Z

mesmo erro

Exception in thread main java.security.NoSuchAlgorithmException: PBEWithMD5AndDES SecretKeyFactory not available

at javax.crypto.SecretKeyFactory.(DashoA13*)

at javax.crypto.SecretKeyFactory.getInstance(DashoA13*)

at comuns.Cripto.senha(Cripto.java:39)

at comuns.Cripto.main(Cripto.java:95)

q q é isso? na api está dizendo q é quando o algoritimo não pode ser encontrado no pacote… mas onde arrumo um outro pacote q tenha isso? será q é a ide (não tem como, mas sei lá…)

Realmente, esse algoritimos ae no existem na minha maquina… se vc escrever qualquer coisa no lugar ele dá o mesmo erro…

E

Ponha no começo do seu programa uma instrução do tipo System.out.println (System.getProperties()); O que ele imprime? (eu sei, vai dar um monte de lixo, se puder redirecione isso para um arquivo).

E

Acho que já sei o que é. Vou alterar o programa e posto daqui a pouco.

E
package guj;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class ExemploCriptografiaSimples {
    private byte[] salt;
    private PBEKeySpec ks;
    private SecretKey skey;
    private SecretKeyFactory skf;
    private BASE64Decoder dec;
    private BASE64Encoder enc;

    public ExemploCriptografiaSimples() {
        dec = new BASE64Decoder();
        enc = new BASE64Encoder();
    }

    public void senha(char[] chars) throws Exception {
        skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1", "SunJCE");
        salt = new byte[4]; // deixamos 4 bytes zerados :(
        ks = new PBEKeySpec(chars, salt, 100, 128);
        skey = new SecretKeySpec(skf.generateSecret(ks).getEncoded(), "AES");
    }

    public String cifrar(String original) throws Exception {
        Cipher cf = Cipher.getInstance("AES/OFB/NoPadding", "SunJCE");
        cf.init(Cipher.ENCRYPT_MODE, skey, new IvParameterSpec(new byte[16]));
        return enc.encode(cf.doFinal(original.getBytes()));
    }

    public byte[] cifrarBytes(byte[] original) throws Exception {
        Cipher cf = Cipher.getInstance("AES/OFB/NoPadding", "SunJCE");
        cf.init(Cipher.ENCRYPT_MODE, skey, new IvParameterSpec(new byte[16]));
        return cf.doFinal(original);
    }
    
    public String decifrar(String cifrado) throws Exception {
        Cipher cf = Cipher.getInstance("AES/OFB/NoPadding", "SunJCE");
        cf.init(Cipher.DECRYPT_MODE, skey, new IvParameterSpec(new byte[16]));
        return new String(cf.doFinal(dec.decodeBuffer(cifrado)));
    }

    public byte[] decifrarBytes (byte[] bytes) throws Exception {
        Cipher cf = Cipher.getInstance("AES/OFB/NoPadding", "SunJCE");
        cf.init(Cipher.DECRYPT_MODE, skey, new IvParameterSpec(new byte[16]));
        return cf.doFinal(bytes);
    }
    

    private static byte[] serializar (Object obj) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream (baos);
        oos.writeObject(obj);
        oos.close();
        return baos.toByteArray();
    }
    private static Object desserializar (byte[] bytes) throws IOException, ClassNotFoundException {
        Object obj;
        ByteArrayInputStream bais = new ByteArrayInputStream (bytes);
        ObjectInputStream ois = new ObjectInputStream (bais);
        obj = ois.readObject();
        ois.close();
        return obj;
    }
    
    public static void main(String[] args) throws Exception {
        ExemploCriptografiaSimples ecs = new ExemploCriptografiaSimples();
        ecs.senha("YjMIzg+3dhgc7a3EPoH/OA==".toCharArray());
        String s = ecs.cifrar("10/11/2010 - 18:06:45 - Local 3A - Profissional 2r");
        // Esperado: "6A63+uTkapyT8h9GNvYaklLyfIVUCxrCZ+7zIE9XRbJyt6f4i7jBs/13JvsLPNSHpm8="
        System.out.println(s);
        String t = ecs.decifrar(s);
        System.out.println(t);
        // Agora serializando uma lista de objetos.
        System.out.println ("Efetuando a serialização e desserialização");
        List<Object> list = new ArrayList<Object>();
        list.add (Integer.valueOf (12345678));
        list.add (Boolean.TRUE);
        list.add ("abacaxi");
        list.add (Math.PI);
        System.out.println ("Lista Original: " + list);
        BASE64Encoder enc = new BASE64Encoder (); 
        byte[] original = serializar(list);
        System.out.println ("Base-64 (original ): \n" + enc.encode (original));
        byte[] cifrado = ecs.cifrarBytes (serializar (list));
        System.out.println ("Base-64 (cifrado  ): \n" + enc.encode (cifrado));
        byte[] decifrado = ecs.decifrarBytes (cifrado);
        System.out.println ("Base-64 (decifrado): \n" + enc.encode (decifrado));
        System.out.println ("Original = Cifrado? " + Arrays.equals (original, decifrado));
        List<Object> listaDecifrada = (List<Object>) desserializar (decifrado);
        System.out.println ("Lista Decifrada: " + listaDecifrada);
    }

}
Z

valeu de novo cara, hehehehehehe
mas agora deu esse

Exception in thread main java.security.NoSuchProviderException: no such provider: SunJCE

at sun.security.jca.GetInstance.getService(GetInstance.java:66)

at javax.crypto.SunJCE_b.a(DashoA13*)

at javax.crypto.SecretKeyFactory.getInstance(DashoA13*)

at comuns.Cripto.senha(Cripto.java:36)

at comuns.Cripto.main(Cripto.java:85)

as propriedades

{java.runtime.name=Java™ SE Runtime Environment, sun.boot.library.path=C:\Program Files\Java\jdk1.6.0_22\jre\bin, java.vm.version=17.1-b03, java.vm.vendor=Sun Microsystems Inc., java.vendor.url=http://java.sun.com/, path.separator=;, java.vm.name=Java HotSpot™ Client VM, <a href="http://file.encoding.pkg=sun.io">file.encoding.pkg=sun.io</a>, sun.java.launcher=SUN_STANDARD, user.country=BR, sun.os.patch.level=, java.vm.specification.name=Java Virtual Machine Specification, user.dir=C:\Users\User\Desktop, java.runtime.version=1.6.0_22-b04, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=C:\Program Files\Java\jdk1.6.0_22\jre\lib\endorsed, os.arch=x86, java.io.tmpdir=C:\Users\User\AppData\Local\Temp, line.separator=

, java.vm.specification.vendor=Sun Microsystems Inc., user.variant=, os.name=Windows 7, sun.jnu.encoding=Cp1252, java.library.path=C:\Program Files\Java\jdk1.6.0_22\bin;.;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;;C:\Program Files\Java\jdk1.6.0_22\bin;C:\windows\System32\Wbem;C:\Program Files\Java\jdk1.6.0_22\bin;C:\Program Files\Java\jdk1.6.0_22\jre\lib\ext;C:\Users\User\Desktop\Classes Comuns, java.specification.name=Java Platform API Specification, java.class.version=50.0, sun.management.compiler=HotSpot Client Compiler, os.version=6.1, user.home=C:\Users\User, user.timezone=, java.awt.printerjob=sun.awt.windows.WPrinterJob, file.encoding=Cp1252, java.specification.version=1.6, java.class.path=.;;C:\Program Files\Java\jdk1.6.0_22\bin;C:\Program Files\Java\jdk1.6.0_22\jre\lib\ext;C:\Users\User\Desktop;C:\Program Files\jGRASP\extensions\classes, user.name=User, java.vm.specification.version=1.0, java.home=C:\Program Files\Java\jdk1.6.0_22\jre, sun.arch.data.model=32, user.language=pt, java.specification.vendor=Sun Microsystems Inc., awt.toolkit=sun.awt.windows.WToolkit, java.vm.info=mixed mode, sharing, java.version=1.6.0_22, java.ext.dirs=C:\Program Files\Java\jdk1.6.0_22\jre\lib\ext;C:\windows\Sun\Java\lib\ext, sun.boot.class.path=C:\Program Files\Java\jdk1.6.0_22\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_22\jre\classes, java.vendor=Sun Microsystems Inc., file.separator=, java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, sun.desktop=windows, sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86}

Exception in thread “main” java.security.NoSuchProviderException: no such provider: SunJCE

at sun.security.jca.GetInstance.getService(GetInstance.java:66)

at javax.crypto.SunJCE_b.a(DashoA13*…)

at javax.crypto.SecretKeyFactory.getInstance(DashoA13*…)

at comuns.Cripto.senha(Cripto.java:37)

at comuns.Cripto.main(Cripto.java:86)

to pesquisando ake…

E

Que estranho. Mesmo rodando o programa usando a JRE e não o JDK (que foi o que fiz), não dá esse problema que você teve de jeito nenhum.

Experimente rodar seu programa usando o java.exe que vem com o JDK, não o java.exe que está no seu path, e que aponta para a JRE.

Z

Acho q eu to ficando louco… Pelo prompt não achou a classe, dae recompilei pelo prompt… óia ae. Será q tem algo a ver esses warnings? mas o erro é diferente pelo jre

C:\Users\User\Desktop\comuns>javac Cripto.java

Cripto.java:19: warning: sun.misc.BASE64Decoder is Sun proprietary API and may b

e removed in a future release

import sun.misc.BASE64Decoder;

^

Cripto.java:20: warning: sun.misc.BASE64Encoder is Sun proprietary API and may b

e removed in a future release

import sun.misc.BASE64Encoder;

^

Cripto.java:27: warning: sun.misc.BASE64Decoder is Sun proprietary API and may b

e removed in a future release

private BASE64Decoder dec;

^

Cripto.java:28: warning: sun.misc.BASE64Encoder is Sun proprietary API and may b

e removed in a future release

private BASE64Encoder enc;

^

Cripto.java:31: warning: sun.misc.BASE64Decoder is Sun proprietary API and may b

e removed in a future release

dec = new BASE64Decoder();

^

Cripto.java:32: warning: sun.misc.BASE64Encoder is Sun proprietary API and may b

e removed in a future release

enc = new BASE64Encoder();

^

Cripto.java:100: warning: sun.misc.BASE64Encoder is Sun proprietary API and may

be removed in a future release

BASE64Encoder enc = new BASE64Encoder ();

^

Cripto.java:100: warning: sun.misc.BASE64Encoder is Sun proprietary API and may

be removed in a future release

BASE64Encoder enc = new BASE64Encoder ();

^

Note: Cripto.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

8 warnings
C:\Users\User\Desktop\comuns>java Cripto

Exception in thread main java.lang.NoClassDefFoundError: Cripto

Caused by: java.lang.ClassNotFoundException: Cripto

at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

at java.lang.ClassLoader.loadClass(ClassLoader.java:307)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

Could not find the main class: Cripto.  Program will exit.

C:\Users\User\Desktop\comuns>

Z

Pelo eclipse já rola outra coisa…

Exception in thread “main” java.lang.Error: Unresolved compilation problems:
Access restriction: The type BASE64Encoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
Access restriction: The constructor BASE64Encoder() is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
Access restriction: The type BASE64Encoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
Access restriction: The method encode(byte[]) from the type CharacterEncoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
Access restriction: The method encode(byte[]) from the type CharacterEncoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
Access restriction: The method encode(byte[]) from the type CharacterEncoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar

at comuns.Cripto.main(Cripto.java:102)
Z

CAAAAAAAAAAAAAAAAAARA rodou…

entalagment, resolvi com isso:

public BASE64Decoder dec;
public BASE64Encoder enc;

private não deixava alguma outra classe acessar… nao me pergunte por que… no eclipse ele apareceu q o problema era de acesso à variavel, mudei na cagada… tá resolvido por enquanto
acho q é so isso

valeu memo pelo esforço… manda a conta depois q deposito umas 3 brejas! heheehheheheheh

Criado 30 de novembro de 2010
Ultima resposta 30 de nov. de 2010
Respostas 19
Participantes 3